315 腾讯测开一面

问题复盘

1.TCP和UDP的区别;网络中七层协议详细解释

2.cookie和session的区别------python中request的用法

3.cookie和session的生命周期

cookie的生命周期:

  • 持久性cookie:如果创建时指定了过期时间('Expires'属性),cookie将被保存在客户端的硬盘中,直到达到过期时间。【即使浏览器关闭,这些cookie也会保留下来,直到他们过期或被用户手动删除】
  • 会话性cookie:如果没有设置过期时间,Cookie 将是会话级别的,也就是说它只在当前会话期间有效。这种类型的Cookie存储在内存中,并在用户关闭浏览器时被删除。

Cookie的生命周期可以通过设置ExpiresMax-Age属性来控制。Max-Age属性定义了Cookie从创建开始存在的秒数。如果两者都未设置,Cookie将被视为会话性Cookie。

session的生命周期:

  • 服务器端: Session数据存储在服务器上。Session的生命周期通常由服务器设置和配置控制。一般来说,Session会在用户的会话结束时失效,例如用户关闭了浏览器或者Session超时(由于长时间的不活动)。服务器上通常会有一个超时设置,确定了Session在多长时间的不活动后被销毁。这个超时时间可以在服务器的配置中设置
  • 客户端 : 用户端的Session依赖于特殊的Session Cookie(通常是名为JSESSIONID的Cookie,至少在Java环境中是这样),该Cookie用于在服务器和客户端之间保持Session的唯一标识。这个Cookie通常是会话性的,意味着它仅在当前浏览器会话期间有效,并在浏览器关闭时被删除。

4.python中装饰器的理解 python中最常用的库有哪些? list和元组的区别?其他python基础题

装饰器是一种高级的语法,用于修改函数、方法或类的行为,而无需直接修改他们的定义。【个人理解:装饰器可以理解为一个包装函数,它接收一个函数作为参数,并返回一个新的函数,这个新函数通常会在原有函数基础上添加一些新的功能】------装饰器增强了代码的复用性和可读性 【例如:在金融项目中,使用Unittest中的parametrize()参数装饰器,传入读取数据的函数,然后根据传入的参数执行测试用例,可以减少代码的冗余性】

具体来说,装饰器的工作流程如下:

  1. 装饰器本质上是一个接收函数作为参数的函数(我们称之为装饰器函数)。
  2. 装饰器函数内部定义了另外一个函数(我们可以称之为包装函数),这个包装函数会调用原始函数,并在调用前后执行一些附加操作。
  3. 装饰器函数返回包装函数,这样原始函数的调用实际上就变成了包装函数的调用。
  4. 当装饰器应用到某个函数上时(通过在函数定义前使用@装饰器名称的语法),实际上是将该函数作为参数传递给了装饰器函数,并将返回的包装函数替换原始函数。

5.linux一些命令 管道、grep

grep 文本搜索,查找文件内容

bash 复制代码
grep hello test.txt			在某个文件中,查找包含hello的内容,只要一行中有hello会把整行显示
grep -n hello test.txt		n显示第几行找到的
grep -v hello test.txt		v反向查找 查找不包含hello的内容行
grep -i hello test.txt		i查找时不区分大小写

grep -n hello /home/admin -r	查找整个目录中的所有文件

6.通过管道 | 如果将当前目录下的文件名复制出来?

ls | xclip -selection clipboard

7.数据库中join的用法?

join是一种用于联合多个表的操作,以便根据他们之间的相关字段检索相关数据,join操作可以使得将多个表中的数据组合起来,以便在查询中获取更全面的结果

  • inner join(内连接):返回匹配的两个表之间的关联条件的行,如果两个表中的行在关联条件上没有匹配项,则不会包含在结果集中。
  • left join(左连接):返回左表中的所有行,并包括与右表匹配的行,如果右表中没有匹配项,则结果集中右表的所有列将包含 NULL 值。
  • right join(右连接):返回右表中的所有行,并包括与左表匹配的行。如果左表中没有匹配项,则结果集中左表的所有列将包含 NULL 值。
  • full join(全连接):返回左表和右表中的所有行,如果没有匹配的行,如果没有匹配的行,则结果集中的某些列将包含 NULL 值。
  • cross join:返回两个表的笛卡尔积,即左表的每一行与右表的每一行组合在一起。【暂时未接触过 记得复盘】

8.docker命令?

9.了解数据结构吗?常见的数据结构有哪些?栈用于哪些场景?.....

10.常见的二叉树有哪些?

11.红黑树的用途?

12.常见的设计模式?

13.手撕算法 传入数字,输出添加千分位的格式字符串

例如:input 1000 1000000

output 1,000 1,000,000

根据上述算法设计测试用例:

正向:

反向:

性能:

兼容性:

安全性:

算法题复盘

如何将int/long/double/char 转化为字符串【复习】

java 复制代码
public class TC_test2 {
    public static void main(String[] args) {
        // 通用办法 String.valueOf() 可以将多数常用的数据类型转换为字符串
        // 1.将int转换为字符串
        int num = 100;
        String str1 = Integer.toString(num);
        System.out.println(str1);

        // 2.将long 转化为字符串
        long l1 =456579859;
        String s1 = Long.toString(l1);
        System.out.println(s1 );
        String s2 = String.valueOf(l1);
        System.out.println( s2);

        // 3.将double转换为字符串
        double d1 = 132.25;
        String s3 = String.valueOf(d1);
        System.out.println(s3);

        // 4.将char 转换为字符串 也可使用String.valueOf()方法

        // 5.将字符串转换为字符数组
        String s5 = "ascgtgh";
        char[] strArray = s5.toCharArray();
        for (int i = 0; i < strArray.length; i++) {
            System.out.print(strArray[i] + " ");
        }
    }
}

千位分隔符 例如输入1000 输出1,000

java 复制代码
import java.text.DecimalFormat;

public class TC_Test1 {
    public static void main(String[] args) {
        long num = 1000323;
        // 调用方法一
//        System.out.println(method1(num));

        // 调用方法二
        System.out.println(method2(num));
        
    }
    // 方法一: 使用Java内置方法来实现千位分隔
    public static String method1(double num){
        // java.text.DecimalFormat; 类中提供了格式化的功能 其中"#,###"是格式化模式
        //  "#" 表示一个数字,"," 用作分组(千位)分隔符
        DecimalFormat df = new DecimalFormat("#, ###");

        // 使用format方法将数字格式化为带千位分隔符的字符串
        String str = df.format(num);
        return str;
    }

    // 方法二: 使用普通方法实现
    public static String method2(long num){
        // 将数字转换为字符串
        String numStr = Long.toString(num);
        // 创建字符串容器 用于存储最终结果
        StringBuilder result = new StringBuilder();

        int length = numStr.length();
        // 从后往前遍历字符串
        for (int i = length -1 ; i >= 0; i--) {
            // 计算当前字符距离末尾的距离
            int distanceEnd = length - 1 - i;
            // 如果是3的倍数且不是第一个数字,就在当前位置前面加上逗号
            if(distanceEnd > 0 && distanceEnd % 3 == 0){
                result.insert(0, ",");
            }
            // 将当前数字添加到结果的开头
            result.insert(0,numStr.charAt(i));
        }
        return result.toString();

    }
}
相关推荐
IT毕设梦工厂11 分钟前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
luthane38 分钟前
python 实现average mean平均数算法
开发语言·python·算法
码农研究僧43 分钟前
Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)
python·flask·用户登录
Ylucius1 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习
凡人的AI工具箱1 小时前
AI教你学Python 第11天 : 局部变量与全局变量
开发语言·人工智能·后端·python
sleP4o1 小时前
Python操作MySQL
开发语言·python·mysql
凌不了云1 小时前
windows环境下安装python第三方包
开发语言·python
大熊程序猿1 小时前
python 读取excel数据存储到mysql
数据库·python·mysql
生椰拿铁You2 小时前
Python
python
鸽芷咕2 小时前
【Python报错已解决】python setup.py bdist_wheel did not run successfully.
开发语言·python·机器学习·bug