字节客户端 0基础123面
一面19号,二面21号,三面26号,没有hr面,今天下午收到了意向书
没有录音,下面的内容全是回忆,漏了不少一些问题
一面:1h
1. 自我介绍
没问项目,问基础
2. 进程和线程的区别
3. 进程之间的通信方式
4. 详细讲一下各种方式的原理
5. 其他问题忘了
6. 算法:leetcode第4题,寻找两个有序数组的中位数,时间复杂度O(log(m + n)) 困难
(没写出来😭,想了一个o(m + n)的解法,但是写不出来,写了10行代码就给面试官看了,面试官看代码的时候都不敢看他。。。。面试官看代码有数组越界问题,让我改,改了5分钟没改出来。。然后面试官说我不想写代码(原话),我都要吓死了😭,最后跳过了,谢面试官不杀之恩)
7. 讲一下socket是什么(上面讲各种通信方式的原理的时候没讲清楚socket,也是本来就不知道咋讲😂,就开始乱扯)
8. 什么是死锁
9. 死锁必要条件,详细讲一下
10. 其他问题忘了
11. 最后一道算法:用两个队列实现栈
二面:45min
1. 自我介绍
2. 问项目,我项目一个是大文件分块传输,另一个是谷歌插件
深挖第一个项目:
怎么分块传输
怎么确定文件发送完毕
怎么实现断点续传
怎么确保文件完整无损坏(答md5)
讲一下md5的原理
md5安全不安全
其他项目问题忘了
3. 进程和线程的区别
4. 线程通讯方式
5. http和https的区别
6. https的连接过程
问C++
7. 你是怎么看待多态的
8. C++怎么实现多态
9. 讲一下虚函数(将虚表指针,虚表)
10. 知道纯虚函数吗
11. 讲一下智能指针
12. 右值引用知道吗(不知道)
13. move知道吗
14. 其他C++问题忘了
15. 算法:二叉树的深度,递归,迭代两种方式
二面里问了很多C++的问题,其余的计网、操作系统只是随口问了下
三面:1h
1. 自我介绍
2. 问第一个项目
3. 怎么分块传输
4. 怎么断点续传
5. 在传输某一块的过程中断开连接怎么办
6. 客户端是单线程,服务器是多线程和异步,客户端设计成多线程应该怎么做
7. 客户端多线程多个小文件怎么合并成大文件,串行?并行?
8. 并行合并文件会有什么问题,该怎么做
9. 服务器用了select模型,select和epoll有什么区别
10. 为什么select有最大文件描述符的限制
11. 问第二个项目,第二个项目是基于谷歌插件技术为普通网页添加弹幕功能
12. 怎么把自己的代码插入到其他人的网页中(答这是谷歌插件做的)
13. 你自己要实现这个功能,你会怎么做
14. 你是怎么实现弹幕功能的
15. 网上有实现这个功能的方案吗
16. 一个屏幕有最大弹幕数量的限制吗
17. 弹幕太多会影响性能吗,最影响性能的操作是什么
18. 你用了jquery的animate函数,它是怎么做的
19. 你的弹幕功能的灵感是是来自哪里
项目结束
20. 共享内存知道吗,它的原理是什么,详细讲一下
21. 语言的原子操作知道吗(不知道)
22. 其他问题忘了
23. 设计模式了解吗,知道单例模式吗(答知道一点,然后题目弹窗就出来了。。,赶紧在面试官说:那写一个单例模式吧 之前补了一句就知道单例模式是一个类同时只存在一个实例😂)
24. 前几面都写过算法吧,感觉算法怎么样(答一般般,还行)
25. 算法:求最长字符串中的最长不重复子串,返回这个子串
面试官电脑没电了,改用电话
26. 学习和生活中遇到的最大困难
27. 你理想的职位是什么,理想的公司是什么样的
28. 能来实习吗
上面的内容全是回忆,忘了不少问题,还记得的大部分是项目问题😂,不过字节的面试官提的问题其实上都是一些基础问题,多复习多背背就可以了,其实上从提前批到现在面试官问的问题来来回回也就是那几十个。
最后祝大家都有offer