首先腾讯的面试官很nice,面试过程远没有想象的那么困难。
1.自我介绍(很重要,提前背好稿子梳理好)
我从学习、项目以及实习三个方面介绍了自己,着重讲述了项目,以及在项目中的角色,承担的责任。
2.项目介绍
面试官就开始对着你的简历里写的项目开始询问,这里也是要梳理好自己的项目。这是一个什么项目?实现了什么功能?你的技术选型?为什么这么选?你的某个功能点是怎么做的?等等问题。
然后就开始问技术问题:
3.对JVM GC机制的了解,有什么GC算法?
这里第一个技术问题,十分紧张。支支吾吾了半天,挤了新生代是一块eden和两块survivor区按照8:1:1 复制算法实现,老年代则标记—清除算法(我好像说成了标记整理算法),然后说了有 复制算法,标记清除算法,标记整理算法,我只记得这三个,面试官说有四个,还有个我记不得了,查了一下是引用计数法?
4.进程和线程的区别?了解协程吗?
协程前一天晚上看了一眼,心虚。
5.什么是线程池?都有哪些线程池?
线程池的概念还是很好理解的,有哪些线程池我只回答到了三个,不过我强调了我知道有三个,还有newFixedThreadPool,忘了。
6.什么是死锁?死锁怎么解决?
什么是死锁一定要背好,我没有梳理好逻辑支支吾吾了半天,差点把自己急死,本来想解释清楚,越抹越黑。
死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于阻塞状态,无法前往执行。
死锁问题也很常见,四个必要条件,死锁预防、死锁避免、死锁检测、死锁接触,以及银行家算法
7.说一下OSI七层架构,每一层的作用?
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
各层作用我是按照五层架构讲的
8.说一下三次握手和四次挥手?
三次握手和四次挥手简直就是送分题,逢面必有,以及为什么要三次和四次
9.TCP/UPD的区别?
这里我说了可靠传输,面试官好像没听到。
10.TCP的可靠传输是怎么实现的?
序号、校验和、三次握手连接、流量控制、拥塞控制,确认机制,超时重传机制。
11.说一下拥塞控制
滑动窗口,控制发送速率
慢开始算法、拥塞避免算法、快重传快恢复算法。
12.了解网络安全吗?
之前有打过一次CTF比赛,还好还有点基础,说了一下XSS攻击、CSRF攻击以及SQL注入,后来发现把CSRF攻击的预防方式说成SQL注入的了。
面试说他们主要做高并发,然后就问了一些高并发的问题,感觉回答得不是很好。
13.了解高并发吗?
说了一下高并发造成的后果,如数据不一致,服务器容易崩,我真的不了解。qaq
14.如何架构一个高并发高可用系统?
这里我也看了
1.CDN资源静态化
2.nginx负载均衡
3.多台tomcat
4.分布式redis,一写多读
5.mysql的主从复制
6.消息组件的异步操作
不知道这样对不对,感觉面试官不太满意这个回答。可能我没理解他想问的。后来我又看了,还有一些机制,如限流、降级、熔断、隔离。前两天看过一下给忘了。
15.了解微服务吗?
我说我学了springcloud,也自己有做demo,但是日常开发中没法用。
最后面试官说了一下我基础好(不知道是不是真的😂),就是对高并发不太了解,能不能够过一面还得看看。
PS:等一个星期看看有没有机会二面(手动滑稽)