更新 腾讯云 二面 面经 已OC版
把自己的一些面试完的感想和想法写一写记录一下,本人非科班出身,不是大佬,瞎写,请大佬轻喷。
拿到OC了,打算把自己腾讯面试的一些回答写一下,可能对其他人有点帮助,如果说的不对也请大佬们指正。
一、拷打项目
1、科研成果是一个人做的还是团队?研究的这个项目,过程中有遇到什么比较困难的地方吗?
(建议就是如实回答,你一个人做还是团队做的,面试官是问的出来的。如果说自己一个人做,你就要对自己这个项目很了解,不然问到一个点你回答不上来,面试官会怀疑你是不是在说谎。项目困难的地方基本每次都会问,每个项目准备好一个特定的问题模版回答就好。)
2、简历里面有提到专利,那你这个专利的创新点是什么?
(回答了一堆但是没回答到点上,因为专利不是我写的)
3、在这个项目里,你主要负责哪方面的部分?项目的架构是怎么样的?这部分是你自己做还是和其他人一起?
(按照自己的项目回答就行)
4、做数据通信这一块有没有遇到过一些数据同步或者一些消息延迟的一些问题。遇到了解决了吗?假设现在让你解决这个数据延迟的问题,你会怎么解决?没考虑过更换协议吗?
有遇到一些问题,比如传输距离和延迟问题。但是由于项目已经结题了,就没去解决。可能从硬件方向进行解决,更换更好的硬件,或者更改压缩算法,让传输文件的体积更下一点。没考虑过(其实我当时不知道这个换协议是啥意思?)
(面试完后觉得,可能面试官问的是网络传输协议、UDP和TCP之类的,我自己的。如果面试官问到关于项目网络传输或者数据传输方面的内容可以往网络传输这方面靠一靠,毕竟是八股文的内容,自己背的比较熟。)
二、八股文
1、tcp协议和udp协议的区别
TCP是面向连接的协议,传输前需要建立可靠的连接,通过序列号、确认应答和超时重传等机制确保数据的完整性和顺序性,但传输速度相对较慢,适合对数据可靠性要求高的场景,如文件传输和网页浏览。UDP则是无连接的协议,不需要建立连接,不保证数据的可靠传输,可能会出现数据丢失或乱序,但传输速度快,适合对实时性要求高且可以容忍一定数据丢失的场景,如视频会议和在线游戏。
(完全一字不漏答出来肯定不太现实,注意几个关键的点就好,比如是否连接、是否可靠、传输速度等等。记住几个关键特点然后展开说即可)
2、tcp三次握手四次挥手
(这里要回答的就多了,面试官也会在那慢慢等你说,反正时间也多。个人觉得直接回答一个场景案例,即假设一个客户端和一个服务端,他们两个需要进行三次握手和四次挥手会发生什么情况,把这个情景讲完就问题不大。)
3、http和TCP的关系
http是应用层的,TCP是传输层的。然后围绕http进行拓展讲解,从http 0.9讲到了3.0。
(在回答的时候可以适当拓展,向面试官展示一些他没问到但是你其实懂得知识,能让面试官觉得你的知识面还可以。毕竟自己会的不是很多就要把尽量把自己会的东西都展示给面试官看。)
三、测试场景题
1、你也说了http有很多协议,那假设现在一个浏览器只能接受http1.1的协议,你现在用的是http2.0的协议,你现在需要把http2.0降级到http1.1,那你会为这个降级去做一些什么方面的测试设计,去保证你这个功能没有异常。
功能测试:覆盖所有HTTP方法(GET/POST等)和状态码(3xx重定向、4xx/5xx错误),确保HTTP/1.1持久连接复用正常。http2.0具有头部压缩、二进制分帧等功能实现http应用层对头阻塞,更改为http1.1后功能变为管道化传输,该功能能否正常工作。
协议兼容性:验证客户端与服务器能否正确协商协议版本。
(问到了确实不会的方面,只回答了这么多。其实应该再从性能测试、异常测试、安全测试等方面再讲讲,但是确实不会。)
2、安全方面有没有可以测试的?
没想到
(后面觉得可能是想问我TLS、https方面的内容?这次测试场景题感觉答得不是很好,看看有没有大佬教一下要怎么回答)
四、智力题
给你八个球,其中一个球比另外七个轻,然后有一个天秤去称,就排除运气的情况下,最少要几次才能找到那个轻的球?
没答出来,还被面试官说恭喜我超越全国1%的人
(正确答案应该是3,具体解决过程详见:https://www.mianshiya.com/bank/1800815214863917057/question/1824376617816924162)
五、手撕代码
1、设计-个Python装饰器 @cache(expire time=60,max size=100),要求实现以下功能:
缓存结果:对同一组参数的函数调用,在 expire time 秒内直接返回缓存值。
缓存淘汰:当缓存条目超过 max size 时,删除最久未使用的缓存(LRU策略)
参数兼容:支持函数的位置参数、关键字参数。
过期清理:异步线程定期清理过期缓存(可选加分项)
示例:
@cache(expire time=10, max size=3)
def heavy calculation(n):
print(f"计算 {n} 的耗时操作...")
return n * n
(不是力扣的题目,有点像LRU缓存,但是不是一样的解法。真没想到会问装饰器的内容,参考解法如下不知道对不对)
from collections import OrderedDict def lru_cache(maxsize=128): def decorator(func): cache = OrderedDict() def wrapper(*args, **kwargs): key = (args, tuple(sorted(kwargs.items()))) if key in cache: cache.move_to_end(key) return cache[key] result = func(*args, **kwargs) cache[key] = result if len(cache) > maxsize: cache.popitem(last=False) return result return wrapper return decorator
2、有三个数 a、b、c,大小在[1,10000000000] 区间内,并日 a<=b<=c,现在给定一个数组,数组中包含7个数,分别是a,b,c,a+b,a+c,b+c,a+b+c,并将其打乱顺序排列。请根据这 7个数,倒推出 a、b、c 三个数。
思路是先给数组进行一个排序,排序后。第一个肯定是a,第二个肯定是b,不会是两数之和,最后一个肯定是a+b+c。把数值取出来相减就完事了。
(两道题都是力扣上找不到原题的,差点被吓死)
(内容回答的其实很水,很多回答都是不太对的,仅供参考,欢迎大佬指正)
#牛客在线求职答疑中心##测试##牛客创作赏金赛#