第一次体验到绝望的面试,太难了。tcp三次握手每一次发送了什么tcp4次挥手timewait干嘛的2MSL干嘛的timewait过多怎么解决客户端服务器同时请求断开连接怎么办(不知道)tcp滑动窗口干嘛的数据包到了网卡缓冲区,如何到的应用进程,说一下(我说帧一层层解包,他说更底层,还没到操作系统,那我就不知道了)tcp双方建立连接的api是什么,都做了什么tcp四次挥手可以变成三次吗linux查看多少个连接是已建立的(natstat -napt | grep "ESTABLISHED" | wc -l)字节序网络序和主机序了解过吗(不知道)我发送一个数据包出去,我的二进制数据包子节序怎么转换的,对方接收到之后如何转化的(不知道)epoll的接口,与实现网卡接收到一个数据包,怎么判断是否是自己的呢?(我说mac,他说这还是到了内核,在底层一些,不知道)调用一个函数,说出调用函数的具体过程。(模棱两可ababa)栈里面除了局部变量,函数参数 返回值,还有啥(不知道了)创建一个协程的流程?(不知道,就说了下从哪里创建的,存放了什么)协程调用,什么时候一定会发生线程上下文切换?(系统调用,那还有呢?)x86系统有哪些寄存器(全靠已知领域的记忆说了个说了基址寄存器,界限寄存器,还有golang闭包时候存储funcval的DX寄存器,也不知道对不对)10^9个数据,找出前100个。(说了mapreduce思想分治,大顶堆,但是说不是最优解,不会放弃了)我要设计一个流程图,怎么判断流程图里面是否是由循环引用问我如何设计数据结构?我先说因为有依赖,所以链表,可以快慢指针判断是否有环然后,在复杂一点的呢?想了两分钟,说树,他说树本来就没有循环,再想想想了一分钟,有序图。怎么判断是否有循环引用呢?想了五分钟,不会。算法(共享屏幕)给你一个字符串,"43242"和一个divisor整数,算出来字符串除以这个dividor的结果,保留两位小数。字符串会越界uint64,最终的答案也会越界,怎么处理。想了两分钟给了思路,代码只给了十分钟,没有AC。真正的绝望开始如果要你设计一个游戏服务器,比如在linux上用c++写了一个服务器,怎么判断性能指标呢?你说natstat,这个能看连接情况吗?还有什么方法吗?比如你golang写了个服务器,内存,性能,服务器都没问题,qps就是上不去,怎么解决?你说可能是golang协程被限制了,怎么知道当前有多少的协程正在运行?你刚才说可能是网络拥塞了,你怎么判断是否是网络拥塞了?客户端https的时候,怎么验证的服务器证书安全的?(CA,验签,ababa。。)你说服务器提前会向CA机构申请获取数字证书,那我要是云原生,起了很多pod,那我岂不是会同时有一万个服务器向CA机构发起认证?http的结构,如何编码的(请求行,头,体都是什么ababa。。)http怎么知道自己是什么类型的请求(请求行第一个)http怎么知道请求体的长度(content-length)有些http协议是没有content-length,那怎么知道请求体的长度的呢那你知道我们通过一个http url下载一个视频,实现方式或者原理是什么吗?为什么平时SSL之后我们用对称加密加密,不用非对称加密呢?(说了因为算法实现难度的原因,导致非对称更慢,加密后的数据更大,不利于传输)你说非对称加密更慢,慢多少指数级呢?非对称加密怎么实现的呢?(。。。)要你设计一个游戏的uid,怎么设计?(时间戳-机器id-分库分表id-随机数)你说用到了分库分表?具体怎么分?存在数据库吗?数据库宕机了呢?哪里生成id?你是指服务端生成id,存在数据库吗?那服务器宕机了,整个服务就没了?你说mysql集群,那我们怎么部署mysql集群呢?你说负载均衡,那每个服务器生成的id会重复怎么办你说通过模拟雪花算法,弄几个比特位为机器ID,那要是100个服务器,不是得8比特?你说一致性哈希,那要是节点变化了怎么办(现在想想可能可以是redis计数器来生成id,但是只是一个猜想罢了,毕竟这样uid按照顺序不安全。我觉得还是按照具体的业务的设计来看吧,如果原神这种uid,其实知道了对方的uid也无所谓,也造成不了什么影响。如果其他比较重要的,就需要考虑离散的了)面麻了,昨天面完字节以为自己还行,一下子打回地底。绝望。
点赞 52
评论 27
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务