4月1号收到了网易互娱的二面邀请,还是比较开心。重点准备了数据库的知识以及操作系统后,开始了我的二面。面试有点波折,开始在房间网络不好关掉视频保留语音,然后还是不行我抱着电脑去客厅,网络还是不好最后面试官说给我打电话。(吐槽下家里的wifi)二面还是两个面试官,超级亲和nice。
自我介绍准备的很充分,自我情况(实验室方向)+网易游戏吹捧+职位了解+校园表现情况,然后被表扬“看来你准备的很充分,时间把握节奏很好(smile!)然后说对音视频编解码不了解,直接问我实习项目,问了40分钟(后面面试官亲口对我说,对我的实习项目很感兴趣,有点lucky啊),希望自己后续继续深挖下技术要点,面试官能挖的太细了。汗颜~
1.详细介绍下项目功能;
2.为什么要用到session?它的一个过程是怎么样的?
3.你刚讲到了前后端分离,那么你觉得前后端分离好处在哪里?restful 有什么特点嘛?
3.我这边是做支付的,所以我想问下你在做 支付操作的时候,要没有考虑过安全问题?类似于银行汇款,每笔汇款100元,但是可能被攻击,然后发了两笔100元的这种情况,那你是怎么解决这种隐患的呢?
4.有些系统,比如我们网易游戏支付的时候,苹果手机支付不可确定。例如在这一种场景,主播在喊大家送礼物,然后网友们
发起支付,这里存在一波波的请求,那你有什么办法可以缓解服务器的压力吗?
(我说您是说高并发大量数据入数据库嘛,面试官说不是,如果是数据库的,他们可以自行优化。然后我想到了点赞系统用到的消息队列机制,将客户的同步请求改成异步,只返回通知“我已收到您的点赞请求”,把点赞请求放在MQ里面,还可以把后续到来的相同点赞任务进行合并成一个,等到有空余线程,再消耗MQ队列里面的请求,对数据库的值进行更新。)
5.刚刚你说到了消息队列,这个在很多场景下都可以用到。你知道哪些消息队列(MQ部分问的好多啊,这里自己挖坑了,不是特别懂)
我说,用过rabbit MQ以及redis MQ,还进行过比较,100万数据测试,每10万次进行一次时间统计,发现在入队时,当数据较小,redis性能优于 rabbit ;数据较大的时候,redis极其慢 。在出队时,无论数据大小,都是redis很优,rabbit远低。综合考虑我用了redis作为消息队列。
6.你刚说入队时,数据很大时候redis很慢,这是为什么?
因为redis是基于C语言开发的key-value的数据结构,大数据时候对pair更新很慢,面试官说不对。然后犹豫一会说不知道....
7.面试官说他没用过redisMQ,但是据业内说Rabbit是很不错的,纠正了我的说法(以后别随便挖坑)
8.(操作系统还是大头啊,答得真不好。)你平时用从cpp很多,准备面试都会知道字节对齐吧。那为什么要字节对齐?
因为计算机访问内存时,如果字节对齐只需要访问一次,否则对齐两次。
9.从语言的层面怎么检查字节是否对齐?
10.Mysql用到的引擎底层是基于b+树,请问b+树内存分页怎么做?
我说用新增页,再用指针指向新页的页头。
11.是的,那新增页是复制数据,还是挪数据?挪了多少?是多少(面试官特别想知道,可惜我不懂)
12.什么是僵尸进程?什么是孤儿进程?
13.有什么指令可以查看僵尸进程?
我说netstat,面试官说那个只可以看进程总体状态。我说ps,然后问那出来的结果怎么看(zoom)
14.僵尸进程有什么危害?(两点以上)
15.(计算机网络)三次握手,为什么需要三次握手,每次发送的是什么?
我回答了两次握手和四次握手的缺点,但他不满意。我说可以防止已经失效的报文段出现在本次连接中,因为在成功连接前,可能有请求报文滞留在中间的某个节点,等连接成功建立后才到达服务器端,那么此时服务器会以为是又一次连接请求,开始苦苦等待客户端的数据,但是客户端不响应,造成这种等待是很浪费的,所以要三次握手,面试官点了点头。
16.前面项目里面用到的session,是因为http什么特性?
http是无状态的(不会记忆),所以我们要用session保存用户数据。
17.我们在实际工作应用场景里面,很多模块是基于负载均衡才成立的。什么是负载均衡?负载均衡有什么分配算法?(没答出来)
18.问问题。最后面试官问了我,现在手上有offer嘛?
我说还没有,很多都还在面试流程。(这个问题犹豫了,yes会不会代表我只是当他们为备胎,no的话会不会显得我是个菜鸡。hhhh)
总体来说,二面感受是不像一面可以背面经,都是常规知识点和提问方式。二面的提问方式,都是基于面试官实际的工作场景,问我有什么好的解决方法?偏向探讨,不一定有最佳答案,但是也是需要积累、平时对知识点灵活在项目中使用和测试才知道的问题。期待好消息吧~ offer++