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();

    }
}
相关推荐
大模型铲屎官1 小时前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__1 小时前
Python训练营打卡 Day27
开发语言·python
Stara05112 小时前
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
人工智能·python·深度学习·神经网络·目标检测·计算机视觉·yolov11
Java致死2 小时前
设计模式Java
java·开发语言·设计模式
那雨倾城3 小时前
使用 OpenCV 将图像中标记特定颜色区域
人工智能·python·opencv·计算机视觉·视觉检测
LuckyTHP6 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
mahuifa7 小时前
(7)python开发经验
python·qt·pyside6·开发经验
学地理的小胖砸8 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
安迪小宝8 小时前
6 任务路由与负载均衡
运维·python·celery
Blossom.1188 小时前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算