恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
一面(8.27 70分钟)-
实习业务相关
-
lvs四层转发和nginx七层转发的区别?
-
为什么要有lvs四层转发?
-
close_wait和time_wait是什么?为什么要time_wait?
-
499和502出现的原因是什么?
-
session和cookie区别,解决了协议的什么问题?
-
转账过程中,会出现什么事务的问题?
-
from_count -> to_count,to_count是热点用户,可能有多个请求要修改,怎么处理?
-
什么场景需要建立索引,为什么要建立索引?
-
排序数据要建索引吗?范围查询要建索引吗?txt文本数据要建索引吗?
-
用户id怎么生成?(DB自增不可靠,因为可能有多个机器共用一个DB,自增会溢出。从代码层面解释如何生成)?
-
怎么保证DB里面的数据不会被修改(权限问题不考虑,假设用户有权限)?
算法题
任意三个数之和最接近0,类似力扣三数之和。
二面(8.31 60分钟)-
实习经历(20分钟)
-
三次握手具体过程(要说自己的理解,不能直接背),seq可以从0开始吗?
-
数据库索引引擎为什么用B+树,和B树区别在哪,为什么不用红黑树/AVL树(从磁盘IO,查找稳定性,数据量去分析)?
-
B+树的双向有序链表有什么用?
-
进程和线程机制上的区别,应用上的区别,线程共享/独有的,进程通信方式(一个一个往后推理,为什么要有这个)。
-
线程和goroutine的区别,为什么协程比线程轻量级?
算法题
力扣124. 二叉树中的最大路径和
三面(9.1 60分钟)-
golang,defer的底层执行过程,顺序是怎么样的,多个defer执行顺序
-
实习项目,开发流程,遇到的问题(20分钟)
-
golang的slice扩容原理(顺带提了下vector的扩容)
-
网络IO模型有几种,分别是什么(阻塞IO、非阻塞IO、IO多路复用、信号IO、异步IO,详细介绍)
-
socket编程的流程(服务端、客户端)
-
session和cookie
-
进程和线程在应用上的区别,机制上的区别,什么场景选择哪种,为什么?
-
实习项目(20分钟)
-
C++和golang在并发场景下的应用区别
-
socket编程心得
-
个人项目(问了个RPC框架)
算法题
a. 合并两个有序数组(简单)
b. 找一个数,它两边的数都比它大(二分查找变种)
反馈面试完隔天,也就是9.7号,HR联系发意向书,当天中午收到意向书。
总结:面试的大部分时间在聊实习经历(我在腾讯云有过一段实习经历,做cdn),和基架那边的业务线有些关联,所以聊得来。然后大多是一些开放性的问题,不是那种八股直接背出来就行的,我这里列的问题可能不全,但每个问题面试官都会追问。二面后问面试官表现怎么样,他说底层技术知识还是不错的,不会停留于表面,因此面试问到不会的可以尝试和面试官讨论下,不要停留在背八股的层面。 最后,祝大家都能拿到心仪的offer,顺利结束秋招!