写个社招的面经吧

个人情况

毕业两年,北京在线教育创业公司,技术氛围不错。主要语言栈golang、python,主要技术方向是k8s、容器、云计算。有服务上云的实践经历,了解cicd基本流程,求知意向是容器研发、基础架构研发、运维研发之类的(主要还是研发方向)。

面试周期

2021.7.19 ~ 2021.8.30

已面试公司

快手、字节、小米、金山云、完美世界、京东云、百度、西安腾讯云、西安中兴通信、字节西安。
快手二面卒,字节一面卒,小米二面卒,金山云感觉聊的挺好的一面卒,完美世界offer,京东云现场面offer,百度一面卒,西安腾讯云offer,西安中兴已拒,字节西安三面拒了(比较晚)。

面试前期准备很重要!!!准备充分面试时感受会好很多。千万别裸面!!!

简单说一下面试的基本问题吧(主要还是偏向基础)

项目方向:

项目的话我不多说什么,就是自己的项目细节自己肯定清楚,如果项目中不是自己做的部分,建议不要在简历上写太多,写清楚自己做了什么,容易被抠细节问,项目一般都会抠细节,特别细的那种!!!

语言栈:

因为我主要语言栈是go,所以一般都比较少问python。

golang

1、gin框架路由怎么实现的,具体正则怎么匹配?限流中间件怎么实现?
2、go的slice与数组的区别,slice的实现原理,源码?
3、golang的协程调度,gpm模型。协程调度过程中的锁。
4、golang的channel实现,channel有缓存和无缓存,一般会直接撸码(三个goroutine顺序打印)。
5、golang的关键字defer、recover、pannic之类的实现原理。
6、sync包里面的锁、原子操作、waitgroup之类的。
7、make和new的区别,引用类型和非引用类型,值传递之类的。

python

1、python多线程、多进程。
2、python的装饰器怎么实现的?

操作系统:

1、进程、线程、协程间的区别以及他们间的切换之类的,有时候会问到语言级别的协程。
2、io复用、用户态/内核态转换
3、awk命令
4、linux查看端口占用
5、top命令,free命令中的各个参数表示什么,buff/cache都表示什么?

k8s & 容器:

1、简单聊一下什么是云原生、什么是k8s、容器,容器与虚机相比优势。
2、k8s组件,pod创建的过程,operator是什么?
3、docker是怎么实现的,底层基石namespace和cgroup。
4、k8s的workload类型,使用场景,statefulset你们是怎么用的?
5、limit和request,探针,一般怎么排查pod问题,查看上次失败的pod日志。
6、sidecar是什么,怎么实现的?
7、pv,pvc,动态pv怎么实现
8、k8s的声明式api怎么实现的,informar源码。
9、cicd,发布模式。
10、svc的负载均衡、服务发现,ipvs与iptables。
以上基本是会被问的点(虽然有一些问题我也不是很熟),另外很多会被问k8s的网络之类的,因为我比较菜,这块被问的比较少。

计算机网络:

1、tcp三次握手四次挥手,为什么不能是两次握手,三次挥手?握手和挥手过程中的状态。
2、time_wait作用,为什么是2msl,close_wait作用,time_wait过多怎么办?
3、http请求的过程,浏览器输入网址请求过程?dns解析的详细过程?
4、https与http的区别,https第一次服务端回传是否加密?
5、tcp与udp区别,tcp怎么保证可靠性。
6、http请求头、分隔符、长连接怎么实现

数据库:

1、mysql的事务,事务使用场景。
2、mysql的索引,什么情况下索引失效,聚簇索引与非聚簇索引,索引的存储b+树与b-树区别。
3、join的内外连接,最左匹配原则。
4、redis的数据结构,hmap怎么实现的,持久化怎么做,go操作redis的方式。
数据库方向有被问到,我基本没答上来(一般都告诉他只会基础,开发直接使用gorm)。

数据结构与算法:

1、倒排索引和B+树
2、判断链表是否有环,时间复杂度要求0(1)
3、LeetCode上合并区间的题
4、leetcode的股票买卖的题
5、二叉树的最近公共祖先
6、有序数组合并
7、什么是平衡二叉树、最小堆
8、大文件的top10问题

其他:

1、git 的相关操作,合并commit,合并之类的。
2、场景设计