链接:https://www.nowcoder.com/discuss/688309?toCommentId=9715032
来源:牛客网
字节跳动(7.27接到面试电话)
一面视频面(7.28面试官超级超级好)
1. 自我介绍
2. 哪个项目比较拿手?介绍一下吧
3. 有没有做过真机调试?
4. 网络编程熟悉么?简单介绍一下
6. volatile关键字说一下它的底层原理吧(我从三个特性答的,但可见性关于工作内存和主内存面试官说我说的不对让我回去深入了解一下)
5. TCP/IP三次握手和四次挥手的过程?
6. TIME-WAIT的状态知道么?为什么要有TIME-WAIT的状态?
7. Mysql数据引擎有了解么?说一下你了解的数据库引擎(三个)
8. 介绍一下InnoDB它的原理和底层索引的设计?为什么这么设计?
7. JVM我看你也了解是吗?那你可以说一下它的垃圾回收机制么?它们是怎么样的一个关系?(估计给面试官讲时间太长了,后来没问JVM了)
9. Redis我看你也有了解,你介绍一下它的有几种数据类型?详细说一下
10. 缓存击穿,缓存穿透和缓存雪崩介绍一下以及它们的解决方案。
11. 为什么缓存击穿会给数据库造成较大压力呢?
12.为什么Redis会比Mysql快?
1)Redis是基于内存存储的,而mysql是基于磁盘存储的,内存的交互肯定是要比磁盘的交互快的
2)Redis内数据存储格式是KV形式查找数据时的时间复杂度是O(1),Mysql底层是B+树,查找数据时的时间复杂度是O(logN)所以查找数据时Redis是比Mysql要快的
3)Redis是单线程多路复用IO,单线程的切换的话他避免的线程切换消耗的时间,多路复用IO避免了IO等待的开销
13. Spring,SpringMVC和SpringBoot的一个关系?Spring它作用是什么?(IOC和AOP)
二面视频面(8.3,面试官人特好,你不会的话他会和你交流引领你回答)
1. 自我介绍
2. 项目介绍
3. 项目中的表是怎么设计的?根据分类查出含有问题最多的分类,写一个sql语句。
4. 你这个hashmap多线程出现了什么问题?怎么去解决的?
6. concurrenthashmap1.7和1.8区别,简单说一下就行了,不用太详细。
7. 分段锁是什么?当concurrenthashmap扩容了之后分段锁数量会改变吗?如果有15个线程同时对一个segment里边的用户信息进行修改会发生什么?
8. ajax和websocket它们的区别是什么?websocket是异步的还是同步的?
9. 异步和同步它们有什么区别?一个socket如果是异步的,它在这期间能做其他事情吗?
(中间面试官换了个会议室)
10. TCP三次握手目的,过程及状态转换,三次握手过程中传输的都是什么信息?
11. 如果在传输信息过程中一个数据包丢失了怎么办?那么接受方怎么知道数据包是否是连续的呢?接收方如何知道自己应该接受多少的数据包呢?
12. 发送方如何收到接收方发来的重传消息的?按你的来说使用了连续arq重传机制, 接受方不是已经有发送方发送的所有数据包了么,只不过中间有一个丢失了,那么发送方还需要重传后边的数据么?
连续的arq协议是如果中间有一个数据包丢失了,那么发送方就必须重传该包后边所有的数据包,这也叫go-back-n,它的缺点也很明显就是如果通信线路质量不好时,连续arq会带来负面影响
13. 如果发送方发送的数据包是乱序的那么接收方怎么处理?接收方接收到数据包自己会不会进行一个调整排序?
TCP乱序问题, TCP为了提供可靠的数据传输,它给发送的每个数据包做顺序化。主机每次发送数据时,TCP就给每个数据包分配一个序列号并且在一个特定的时间内等待接收主机对分配的这个序列号进行确认,如果发送主机在一个特定时间内没有收到接收主机的确认,则发送主机会重传此数据包。接收主机利用序列号对接收的数据进行确认,以便检测对方发送的数据是否有丢失或者乱序等,接收主机一旦收到已经顺序化的数据,它就将这些数据按正确的顺序重组成数据流并传递到高层进行处理。
对于不按序到达的数据应该如何处理,tcp并无明确规定。如果接受方把不按序到达的数据一律丢弃,那么接收窗口的管理将会比较简单,但这样做对网络资源的利用不利(因为发送方会重复传送比较多的数据)。因此tcp通常对不按序到达的数据先是临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。-《计算机网络(第七版)》谢希仁 P224
14. 进程和线程它们的区别是啥?
15. 按你举得例子来说,进程切换为什么比线程切换要耗费资源?进程切换它保留的现场信息是什么?线程切换它怎么切换的(PC计数器)?它们有啥不一样么?
16. 线程怎么共享数据的?那么进程能不能共享数据呢?
17. 进程与线程之间的通信方式有哪些?
17. 编程题:力扣283 个人思路:先说思路,使用额外空间,再慢慢优化,最后原地修改。
18. 反问
三面视频面(8.6)
1. 自我介绍
2. 项目介绍
3. 你们专业学的课程与计算机有关的有哪些?
4. 看你自己搭建了一个网站,那么你可以说一下http和https区别么?
5. 那你知道在浏览器输入一个网址它整个经历的过程是什么样的么?
6. http请求它包含了哪些信息或者说它由哪几部分组成?那么服务器接收到了http请求之后会怎么处理?返回一些什么信息?
7. 如何把一个静态页面放到服务器上,让我可以访问呢?你需要在服务器上准备什么?
8. 知道哪些web服务器?apach有用过么?
9. mysql索引有哪几类?
10. 唯一索引和主键索引有区别吗?它们建立的时候用什么关键字?
11. 数据库事务用过吗?
12. nginx平时用过吗?
13. 说一下常用的一些数据结构,它们分别适用于什么场景下?
14. Map用过吗?TreeMap知道是什么?它的底层知道吗?你觉得在哪能用到它?
15. 你用过哪些学习网站呢?平时用他们干什么?
16. 你觉得csdn和掘金它们有啥优缺点吗?知道掘金的沸点吗?
17. 场景题:跟你100万条电话号码求出top10出现的电话号码.(太菜了和面试官一直在交流自己的想法,面试官也一直在和我交流,耗时比较长,面试官一直引导我,收获很多)
18. 反问:部门是干什么的?(业务中台,类似于掘金那种平台但是是面向字节内部的一个平台)
HR面(8.12)
1. 自我介绍
2. 项目介绍
3. 在项目中遇到了什么困难?你收获了什么?
4. 看你是物联网专业的,那么你学的课程什么的和计算机相关的有哪些?
5. 计算机课程是偏少一点的么?
6. 为什么不做硬件行业?而要做软件行业?
7. 那你对之前的三面有复盘过吗?可以说一下前三面你自己认为的不足么?
8. 你的实习时间能是多久呢?
9. 你现在人在哪里?
10.反问
全部评论
(11) 回帖