本次面试为初面,所以问的问题都比较基础,下面列出主要的问题,部分问题下面会给出参考答案。
计算机网络:
- TCP 3次握手4次挥手(经典问题);
- 网络请求的IP和端口信息存放在哪里(假设是内网之间互相访问)?
- TCP粘包;网友的解答
算法:
- 8个小球,一个重量与其他7个不等,求出如何使用一个称在最少次数找出那个重量不同的小球?(问题的难点就在于我们不知道那个特殊的小球是重了还是轻了,所以需要另外处理,面试官给的答案是最少3次可以找出,不知道你能不能想到3次找出的方法?)
- 数组平移,将一个有序且元素不重复的数组元素进行平移,后面的元素因为空间不足会被移动到数组起始位置,给出一个平移好的数组,找出它平移了多少位置。(这里我面试时给出两种解决方法,一种是简单的暴力求解,一种是利用二分法)
go语法:
- go协程和线程的区别;
- 什么场景下不能使用协程,应该使用线程;
- 假设有个cpu密集型的go协程正在运行,它会不会一直占有cpu资源不释放?
mysql:
- 如何进行sql调优;
- mysql的间隙锁(中间穿插问了一些sql执行场景:同时有两个事物,一个新增,一个删除,问执行的结果;范围查询的事务和更新、新增的事务执行的情况等,其实都是在考察间隙锁的使用场景,当时我没反应过来,说实话,间隙锁这个我是第一次听说,应该不止是我一个人这样吧。。。);
- 存储引擎InnoDB和MyISAM的区别;
- 为什么InnoDB不维护数据的总行数;
其他:
- 在以前做过的项目中,是否有经历过系统的升级改造,如何做的?(主要考察从单体应用到微服务的升级改造过程)
- 分布式锁的实现方式(redis、zookeeper、etcd等都可以实现分布式锁);
- 你还有什么想问我的(经典必问。。。)?
本以为一面就凉凉了,结果后面通知我去二面,等二面后,再来分享面试过程- -