写点什么

字节跳动 Java 后端岗,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

  • 2022 年 4 月 26 日
  • 本文字数:2520 字

    阅读完需:约 8 分钟

和往年相比,今年的春招看上去不是那么顺利,多少都受疫情有所影响,但是令我惊讶的是第一家给我面试机会的公司竟然是宇宙条。一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出了名的考算法,实际上我算法部分是相对薄弱的。这次面试,一共三轮,共计四个小时左右,这三轮面试对我来说,简直是灵魂拷问,至于结局,往下看吧!

话不多说,面试场景具体如何,各位看官捧个场吧。另外,下文中涉及到的面试题答案、复习资料,均有完整 PDF 版分享,私信我口令扫码即可~

第一轮面试:1 小时 28 分钟

  • 自我介绍

  • 数据库索引的作用是什么?

  • 段页式

  • 虚拟内存

  • 缺页中断

  • Major/Minor page fault 区别

  • TLB 作用

  • 进程/线程和虚拟内存的关系

  • x86 相关 没听清 直接说不会

  • 讲讲 jvm,内存泄漏怎么理解的

  • 垃圾回收机制,垃圾回收算法讲解一下,怎么判断是老年代,触发垃圾回收的时机在什么时候?

  • BIO、NIO、AIO

  • select poll epoll

  • RMQ 算法

  • 无锁队列实现细节

  • 数据库 ACID

  • 实验室项目

  • vector 底层 为什么扩容是 1.5 倍

  • 算法部分:

(1)给一个正整数,判断是否是 2 的 n 次幂,他说用最快的方式不要递归? 肯定是运算的方式,你能想到的数的运算有哪些,除了加减乘除? 这个地方讲了很多,运算太多了,但是感觉不是面试官想要的,我最后把二进制的移位都说了出来,才 get 到他的点,问还有些什么,他最后问我怎么没提异或,并且出了几个二进制数让我异或算结果

(2)给一个数组,数组里面有 rgb 三种数,数量和顺序完全无序,给一个算法按照他想要的 r 都在前面,g 都在中间,b 都在后面,用移动次数最少的算法进行计算,写算法 这个地方一直叫我优化再优化,我快疯了,我说我不行要放弃了,他说你简历不是写着强烈的好奇心求知欲嘛,没事再想想,我直接笑喷了才放松了点继续想,这简直是心理战

第二轮面试:1 小时 11 分钟

  • 自我介绍

  • 问我计算机网络,操作系统,组成原理,数据结构哪个学的最好?我说计网,因为我实习的时候看了很多计网相关的东西,他叫我把自己最熟悉的东西详细讲解出来

  • 使用 https 就能保证数据安全吗?

  • http 协议处于网络模型哪一层

  • tcp 和 udp 的本质区别是什么?这个地方在数据可靠性深挖的比较多

  • 实习过程中用 http 协议做的事情,http 状态码解释

  • http 发起请求的时候,get,post 别的还有些啥

  • 用 post 获取数据会有什么问题吗?get 和 post 的区别有哪些

  • c 和 Java 的区别,本质区别

  • 面向对象几大特征?什么时候该用继承什么时候不该用继承?有没有遇到过这种使用?为什么继承破坏了封装?

  • 实际项目中运用过多线程吗?用来干什么?

  • 多线程安全问题怎么解决?实际项目中怎么解决的,场景和解决方式

  • 多线程协作方式,除了锁还有什么吗?

  • 信号量解释一下,干什么用的?

  • 死锁怎么产生的?

  • 发生了死锁怎么办?

  • 银行家算法了解么?

  • 算法部分:

(1)有很多纸盒子,每个纸盒里里面套着纸盒子,其中有一个有硬币,怎么把硬币找出来,写算法

(2)树的遍历方法有什么,写一个二叉树前序遍历算法


第三轮面试:1 小时 15 分钟

  • 自我介绍一下

  • 讲一件自己做项目最有挑战的一件事情

  • 比较 mysql 和 mongodb 的优劣

  • mysql 用 join 来做连接,mongodb 怎么做的

  • mongodb 冗余字段的方式和 mysql 有啥不同,缺点

  • 信息变更了,name 变了怎么处理这些冗余字段?

  • mongodb 里面的 aggravate 使用过吗,举一个例子,有什么用

  • pipeline 运行机制是什么,假如你来做 mongdb 执行引擎,自己设计一个方式来设计这个 pipeline

  • 这个问题我回答了很久,因为我完全不懂 pipeline,硬着头皮设计。

  • 你觉得 docker 这个技术能解决什么问题?为什么要用 docker 做部署?有什么好处

  • 运行在 docker 里面的文件系统,docker 怎么实现文件系统机制?

  • 在 docker 里面根目录 cd,能不能跳出沙箱回到宿主机?

  • 问了下我前端知识了解的程度?react 和 jquery 有什么区别?

  • 直接上算法了

(1)寻找最近的父节点,给了两个例子,差不多 leetcode 中等难度

(2)开放性的问题,猫抓老鼠,猫在圆型中间,老鼠在圆的周长上,速度相同,问猫能不能抓到老鼠,这个问题我给的回答他不是很满意,我把关键点说到了但是不能用数学解释出来

结局

结局当然是凉了,没有第四面的通知,但这次经历给我的感受还是很不一样的,也为我下一场面试积攒了经验。之后打算再投几家互联网一线大厂,希望能够顺顺利利, 收到好消息吧。

另外,上文的三面题目的答案和具体解析都整理在了文档里,文章篇幅有限就不在这里分享了,有需要的可以扫描上方二维码免费领取。


我是如何备战字节跳动面试的?

第一步:准备简历

准备简历,并不是指可以在网络上下载一份简历模板,然后修修改改就可以使用了。简历的精心准备,需要注意三个要点:(1)注意区分:了解,熟悉,精通,不要乱写,面试官很多问题都是根据简历描述来进行的;(2)专业知识和项目经验在精不在多,尤其是项目经验一定要写自己熟悉的且有内容可说的,不要认为写得越多越好。(3)要熟悉自己的简历内容,准确掌握,最好是多阅读自己的简历。

如果还是不知道怎么准备自己的简历,我这边可以分享一下我搜集到的简历模板,给大家一个参考,希望能够在给大家一个合格的敲门砖。


第二步:复习+总结

离面试期越来越近也越来越焦虑,这个时候更需要去调整好自己的心态,沉入到复习当中,对各个知识点要学会查漏补缺,学着多去做做总结。

关于复习和总结,我自己也整理了不少资料,均是我的收获,有需要的也可以进行分享。

如:



第三步:刷题

  1. Java 筑基系列:Tomcat+Mysql+设计模式+并发+Netty+JVM

  2. 开源框架系列:Spring+SpringMVC+MyBatis

  3. 微服务架构:Dubbo+SpringBoot+SpringCloud

  4. 分布式数据库系列:Memcached+Redis+MongoDB

  5. 分布式通讯系列:ActiveMQ+RabbitMQ+Kafka

  6. 分布式限流系统:Nginx+zookeeper

  7. 一线互联网大厂历年真题系列

  8. 算法宝典



总结

无论是哪家公司,都很重视基础,尤其是对于应届生来说,所以在面试前基础一定要打扎实。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

针对以上面试技术点,我在这里也做一些资料分享,希望能更好的帮助到大家。

三连+关注作者私信,

即可免费下载资料包哦~内容包括(高并发+Spring 源码+JVM 原理解析+分布式架构+微服务架构+多线程并发原理等...)

用户头像

还未添加个人签名 2020.10.09 加入

还未添加个人简介

评论

发布
暂无评论
字节跳动Java后端岗,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢_Java_Java架构追梦_InfoQ写作社区