24校招,得物测试开发工程师一面

24校招,得物测试开发工程师一面
最新回答
少女

2023-08-31 16:54:06

得物测试开发工程师一面答案回顾

1. Python是什么类型的语言?

  • 答案:Python是一种跨平台、可移植、可扩展、解释型、面向对象的动态语言。

2. Python中常见的内建的数据结构有哪些?

  • 答案:Python中常见的内建数据结构有list(列表)set(集合)dict(字典)元组(tuple)

3. 列表和元组有什么区别?

  • 答案

    列表(list)像队列一样,支持先进先出,对象可以修改,且长度可变。

    元组(tuple)的元素不可修改,且长度不可变。

4. 取列表倒数第三个元素的方法是什么?

  • 答案:可以使用list[-3]来取列表的倒数第三个元素。

5. Python异常处理有哪些关键字?如果需要无论是否有异常,都触发的语句呢?

  • 答案

    Python异常处理的关键字有try、except、else。

    如果需要无论是否有异常都触发的语句,应放在finally块中。

6. 封装异常类,怎么实现?

  • 答案:通过继承Python内置的Exception类,可以实现自定义的异常类。

7. Python支持多继承吗?

  • 答案支持。Python支持多继承,而Java不支持多继承(但Java支持接口的多实现)。

8. Python内存管理机制是什么?

  • 答案:Python的内存管理机制主要包括引用计数和垃圾回收机制(如循环引用检测)。

9. Python装饰器是什么?

  • 答案:装饰器是Python中的一种高级功能,它允许用户在不修改原有函数定义的情况下,给函数增加新的功能。装饰器本质上是一个函数,它接收一个函数作为参数,并返回一个增强功能后的新函数。

10. 多表查询,有哪些连接方式?

  • 答案:多表查询的连接方式包括左连接(LEFT JOIN)右连接(RIGHT JOIN)内连接(INNER JOIN)外连接(FULL OUTER JOIN,但MySQL不直接支持,可通过UNION模拟)以及UNION(用于合并两个或多个SELECT语句的结果集)。

11. MySQL里面的char和varchar有什么区别?

  • 答案

    char是定长字符串,会占用固定长度的空间,即使实际存储的字符串长度小于定义长度,也会占用整个定义长度的空间。

    varchar是变长字符串,只占用实际字符串长度加上一个额外的字节(用于记录字符串长度)的空间,更加节省空间。

12. MySQL的事务特性是什么?

  • 答案:MySQL的事务特性包括原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability),简称ACID。

13. MySQL里面InnoDB是怎么实现的?

  • 答案:InnoDB是MySQL的默认存储引擎,其实现涉及复杂的内部结构和算法,包括但不限于B+树索引行级锁、MVCC(多版本并发控制)等。由于结构复杂,建议自行搜索详细资料。

14. 哪些字段需要设置索引?

  • 答案:通常,以下字段需要设置索引:

    非NULL字段:因为NULL值不会包含在索引中。

    频繁查询的字段:通过索引可以加快查询速度。

    用于连接的字段:在JOIN操作中,连接字段上的索引可以显著提高性能。

    作为条件查询的字段:在WHERE子句中经常使用的字段。

15. 哪些情况下索引会失效?

  • 答案:索引失效的情况包括但不限于:

    未遵循最左匹配原则:在复合索引中,查询条件没有按照索引的最左前缀进行匹配。

    使用了函数、计算操作:在索引字段上进行了函数计算或表达式计算。

    LIKE包含%前缀:在LIKE查询中,如果通配符%出现在开头,则索引无法被有效利用。

    使用了OR、IN或ORDER BY使用不当:在某些情况下,这些操作可能导致索引失效或无法被充分利用。

16. Redis里面有哪些数据类型?为啥查询效率比MySQL高?

  • 答案

    Redis支持的数据类型包括string(字符串)hash(哈希)list(列表)set(集合)zset(有序集合)

    Redis查询效率比MySQL高的原因主要是:Redis是基于内存的数据库,而MySQL是基于磁盘的数据库。内存访问速度远远快于磁盘访问速度,因此Redis能够提供更快的查询性能。

17. 进程和线程有什么区别?

  • 答案

    进程是资源分配的最小单位,它拥有独立的内存空间和系统资源。

    线程是CPU调用的最小单元,它是进程中的一个执行单元,共享进程的资源(如内存和文件句柄)。

18. 线程有哪些状态?

  • 答案:线程的状态包括初始化(New)就绪(Runnable)阻塞(Blocked)运行(Running)等待(Waiting)终止(Terminated)

19. Python中怎么实现多线程?用哪个包?线程锁是什么?

  • 答案

    在Python中,可以使用threading包来实现多线程。

    线程锁(GIL,Global Interpreter Lock)是Python中的一个机制,用于确保在任何时候只有一个Python线程能够执行Python字节码。这是为了简化内存管理并避免竞争条件。虽然GIL限制了多线程在某些情况下的性能,但对于I/O密集型任务,多线程仍然可以带来性能提升。

    除了GIL,还有其他线程同步机制,如Lock、RLock(可重入锁)、Semaphore(信号量)等,它们可以在需要时提供额外的线程同步功能。

20. 测试工具有哪些?http接口的请求报文结构体包含哪些内容?

  • 答案

    常用的测试工具包括PostmanSolopiFiddler等。

    HTTP接口的请求报文结构体通常包含以下内容:

    报文协议及版本:包括请求方法(如GET、POST)、协议版本(如HTTP/1.1)。

    请求头:包含编码格式、数据类型、存活时间、数据长度等信息。

    请求体:包含实际发送的数据(对于GET请求,通常没有请求体)。

21. token存储在哪了?是body里面还是head里面?JWT的结构是什么?

  • 答案

    Token通常存储在HTTP请求的Header中,而不是Body中。常见的做法是将Token作为Authorization头的一部分发送。

    JWT(JSON Web Token)的结构包括Header(头部)、Payload(负载)Signature(签名)三部分。Header部分包含令牌的类型和使用的哈希算法;Payload部分包含声明(如用户信息、权限等);Signature部分是对Header和Payload的签名,用于验证令牌的完整性和真实性。

22. 用postman请求接口,登录信息,身份验证过程是怎样的?

  • 答案

    使用Postman请求接口进行登录和身份验证的过程通常如下:

    发送登录请求:用户通过Postman向服务器发送登录请求,请求中通常包含用户名和密码等登录信息。

    系统验证:服务器接收到登录请求后,对用户名和密码进行验证。

    返回Token:如果验证成功,服务器会生成一个Token并返回给客户端。这个Token通常是一个JWT或类似的加密字符串,用于后续的身份验证。

    客户端存储Token:客户端接收到Token后,通常会将其存储在本地(如浏览器的Cookie或LocalStorage中),以便在后续请求中使用。

    服务端验证Token:在后续的请求中,客户端会在请求头中携带Token。服务器接收到请求后,会对Token进行验证,以确认请求者的身份和权限。

    返回数据:如果Token验证成功,服务器会返回相应的数据或执行相应的操作。

23. 为啥选测试开发?

  • 答案:选择测试开发的原因可能包括:

    对软件测试和开发的结合感兴趣,希望能够在保证软件质量的同时,也参与到软件的开发过程中。

    看好测试开发在软件开发流程中的重要性和发展前景,认为这是一个有挑战性和成长空间的职业方向。

    具备相关的技术背景和技能,如编程能力、测试技能等,适合从事测试开发工作。

以上是对得物测试开发工程师一面问题的详细回顾和解答。希望这些内容能够帮助你更好地准备面试,祝你面试成功!