本来以为就结束了,结果HR说要加一轮面试,好像是之前的面试搞错面试官了还是怎么的,总之就开始了第四轮。 第四轮就开始有点虐了,尤其是算法题让我稍微有点崩,也是时间最长的一轮,大概1个半小时左右。
第四轮:
- 这个面试官一上来就和其他人不一样,先自我介绍了一下,说了一下面试流程。
- 项目介绍。
- 写SQL。
- 项目中的问题。
- Java 的内部类和静态内部类的区别?
(这个回答得不太好,平时不太注意这个点。) - 关于泛型。
- 怎么实现并发的读写?(大概是这个意思)
介绍了一下Java里面的 并发容器。 - 多线程之间如何实现同步?
说了一下信号量和锁。 - 访问一个url链接的详细过程。
- HTTP为什么不用UDP,而用TCP。
从TCP的特点说了一下,并假设使用UDP会出现什么问题。 - 基本上变着法儿把TCP的确认应答机制,流控制,拥塞控制,快重传,慢启动全问了。
- 静态链接和动态链接的却别?
(操作系统的知识,概念有点模糊了) - 虚拟内存了解吗?
(也有那么一点点模糊,大概说了一下)。 - 写道题吧
(我真是要哭了,四轮写了四道题…)
从起点开始接下来有 100 个方块,相邻方块间的距离都为 1,每个方块上有增加体力的食用蘑菇或减少体力的毒蘑菇,蘑菇带来的体力改变是已知的。一个人初始体力为 m,每次可以往前跳任意个方块,体力耗尽就会死掉。 每跳一次消耗的体力与跳的距离成正比,比例为 1。问这个人能否跳到终点,如果能,求可能剩余的最大体力。
由于前面三轮都比较简单,有点放松了,前面的问题有点措手不及,后来紧张了。这道题其实应该算是简单题,但是刚开始没做出来,后来面试官引导了半天写完了。
15. 你有什么要问我的?
面试官:面试结果HR会尽快通知你。
—Over,应该不会再有面试了!
======================================================================分割腺===========================================
其实秋招已经上岸了,拿到的几家公司Java开发offer或者薪资不太满意,要么城市不喜欢。因为以前投过测开岗位的实习,后来莫名其妙被捞了,就想着试一试。
由于之前面的都是开发岗位,这次面测开,总体来说,还是比较简单(被打脸就尴尬了),每轮大概1小时左右,算法题也没有传说中的难。
以下是面试的详细过程(还有些记不清的就不写了):
第一轮:
- 常规项目:你的简历我基本看过了,介绍一下你的几个项目吧。
我: (???自我介绍都不用了?)…省略800字 - HTTP和HTTPS的区别,如果你要为新服务使用HTTPS,需要做些什么工作?
- Kafka原理(因为项目里面说到kafka了)?
- 做道题吧。
扑克牌顺序题目(把手里的扑克牌由上到下第一张放桌子上,第二张放手里最下面,依次循环操作把手里牌全部放到桌子上;已知桌上由上到下的顺序,求手里扑克牌原来顺序,总张数是n;)
写了个简单的暴力算法,面试官提示其实可以用栈来做,其实不难,不过当时还是没想出来。 - 微信显示的点赞顺序和实际点赞数据不一致,怎么排错?
- SQL查询的简单题。
写完之后:如果其中一张表比较大怎么办?
我:可以分表,控制每个表的大小,添加索引。但是面试官好像想说的是过滤空值数据。 - 怎么给一张表添加索引?
- 你有什么想问我的?
面试官:你先休息下,我联系下二面面试官。
第二轮:
1.还是介绍项目。主要会问你负责的部分。
2. 说说Java的垃圾回收机制?
我:balabala说了大概10mins左右(没注意看时间),也没见打断我,后来说累了,就问她:如果您还有兴趣的话,我还可以给您继续介绍一下。
面试官:够了,够了。
3. 常用的软件有哪些?(然后让你测试常用软件里面的功能)
4. 微信红包你会从哪些角度去测试?
5. 有没有向开发者去反映bug?(说了一个)
6. 如果要你设计一个bug反馈系统,你会怎么设计它的技术架构?
7. 访问一个url链接的详细过程。
8. 实现多线程的方式有哪些?
9. 线程/进程之间的通信方式有哪些?
10. 进程/线程的生命周期中有哪些状态?
11. 做道题吧。
小H是Bytedance的一名优秀员工,每天早起按时挤地铁上班。B市一共有n个地铁站,小H家住在1号地铁站,公司在n号地铁站。众所周知,地铁换乘是一件令人不愉快的事情,每次换乘一班新的地铁都要耽误额外的时间(定义换乘为:1、最开始选择x号线上车,2、从x号线换乘到y号线,满足x != y)。
作为一个土生土长的北京人,小H知道所有北京所有地铁线路的信息,信息是一个三元组(u,v,x),表示u站和v站是相邻的两站,且属于x号线的地铁。你能帮帮小H计算,他从家里坐地铁到公司需要的最小换乘次数吗?
用DFS大概做了一下,跑了个测试样例,面试官说还有点问题,由于时间关系先不管了。
12. 你理解的测开是什么?
13. 你工作三年的职业规划是什么?
14. 你上次也有投过我们的岗位,谈谈你对上次面试的印象?
面试官:今天的面试就到这里了,HR会另外联系你面试时间。大概半小时后接到了HR的电话,因为想尽快写论文,就被安排在了明天。
第三轮:
后面才知道这是交叉面
- 聊项目
- 写一个日志输出(到文件)的工具类,不能阻塞。
写了一个用线程池去实现的方案。
另外说了一个异步队列的实现方式,日志请求放到BlockingQueue, 由单个线程(或者线程池)负责日志输出,每次从队列中读取日志请求,完成日志输出。 - OS创建进程/线程的时候需要做哪些操作?
- 进程调度策略有哪些?
- 写一道算法题吧
就是找数组里面左边最大,右边最小的数字那道题。(两个数组实现,一个记录leftMax,另一个记录rightMin)
面试官:空间复杂度能不能优化一下?
(已经有帖子说了怎么做了) - 我看你拿了挺多offer的,都是开发岗位,你现在投的是测开岗,怎么考虑的?
我:想在深圳,以前投的测开实习,刚好你们也捞我。就试一下。然后为了保命说了一下对测开的理解。 - 你还有什么要问我的?
我:什么时候会有结果?
面试官:一般不会超过一周
(你这么说我就有点忐忑了)。
后来问HR,说最快可以今晚…但是一般第二天才会通知。
总之,和后台开发岗位相比,面试还是简单很多的…