春招真没你想的那么难,工作2年4面字节跳动成功上岸,附上我的面经心得!

前言

写在前面的话,说到大厂人们无非现在想到的不是BAT,但是我想说的是字节现在已经有后来居上的趋势,以后肯定不会比现在的BAT差太多!今天分享的是一个朋友的字节跳动四面面经,他自己都没想到看完我的面试资料真的面进去了,下面是他的面试题和过程分享。

一面 11.10 :44 min

  • 说下项目。

  • 线程与协程。(协程不会)

  • DNS查询。

  • DNS投毒。(不会)

  • 堆和栈的区别。

  • 堆什么时候做内存回收。(错了一半)

  • 项目有无用过多线程。(无,只看过书上的demo)

  • 多线程的参数。

  • 用过哪些设计模式,我说单例、工厂、观察者、代理模式。(他想让我说策略模式、装饰模式和适配器模式,但这三个我都不知道)

  • 说一下代理模式和使用场景。

    扫描二维码关注公众号,回复: 12682243 查看本文章
  • Redis字典结构、扩容。

  • HashMap解决Hash冲突的方法。

  • MySQL的二叉树、B树、B+树、Hash索引比较,二叉树的缺点。

  • MySQL的可重复读是怎么实现的,MVCC怎么实现的。

  • MySQL如何判断死锁,回滚的时间是空闲的,能做什么优化。(优化不知道)

  • 进程间通信方式,举例说明一个。(举例说明不会)

  • 一个跟内存泄漏比较相近的词,问我有没有听说过,具体忘了,答没有。

  • 问部门语言

  • 是不是ToB

  • 跟商业变现的区别

  • 我看有些面经都直接问自己过没过,面试官会直接说,我也问了自己过没过,他说等hr通知,我心里咯噔一下,但觉得不至于不过,也不怎么慌。

  • 五点四十五左右面完,六点半hr回复我了,六点四十的时候二面hr就给我打电话预约下次面试了,约到了第二天两点,不得不说,字节效率拉满。

二面 11.11 54min

  • 问了什么时候能实习,实习多久

  • 项目里的登录状态怎么做的(一开始说的SpringSecurity的过滤链,看他表情好像说的不对,他给了点提示,我问是说cookie吗,他说对,然后开始说cookie)

  • cookie与session区别

  • 进程间通信方式,每个详细说明(一面问过了,可能一面答得不好,被标记成答不出来了,所以又问了一边,还好一面结束后好好背了一下)

  • url输入后的过程,https版本,顺便说了数字签名、证书,session-key的建立

  • TCP三次握手、四次挥手

  • TIME_WAIT作用

  • HashMap原理和扩容(脑子一紧张,扩容给忘了,想了能有10秒钟)

  • HashMap是否是线程安全的,从你刚才说的头插法插入链表说一下为什么不安全,是一个什么样的过程

  • 如果想要实现HashMap线程安全,要怎么做(我问可以直接说ConcurrentHashMap的原理吗,他说最好是根据HashMap的问题,一步步推导出来,然后我就对比了HashTable、HashMap说了一下,最后说到为了保持可见性和速度,value用volatile修饰,引出了下面的问题)

  • volatile性质(说错了,挺离谱了,我先说了可见性和原子性,又说了++不是原子性,自己打自己脸,面试官说那到底是不是原子性,我说部分原子性,他说不是原子性)

  • 什么是原子性

  • 缓存行原理(说错了,我说缓存行在内存里,他说不对,然后说CPU什么的,我说不了解)

  • CPU调度(不会)

  • volatile为什么使用缓存行

  • volatile对于64位缓存行的优化

  • 网卡的工作原理(数据到网卡,从网卡读取出来的方法等,不会,只知道到了网卡怎么出去)

  • 使用TCP的时候网络拥塞的处理(我答的流控制、滑动窗口那一套,看面试官表情应该是没错)

  • 滑动窗口大小如何确定

  • TCP拥塞控制

  • TCP连接的时候的攻击了解吗(我说了一直发送SYN让服务器多个连接处于SYN_RCVD状态来消耗服务器内存,他问我确定是内存吗,我说是吧,不太清楚)

  • 问了结果,面试官一开始不想说,最后反问快结束的时候给说了,说给过了,基本符合他的预期。

  • 问了三面侧重点在哪,是项目还是基础,面试官笑了,说不知道,说他自己看重基础,说他自己不了解三面。

  • 问了新人怎么培养,面试官说有官方培训还有组内交流。

  • 问了实习生多久参与线上项目,面试官说一个周,基本把实习生当正常员工用,面试官还问了有没有转正需求,我说有。

三面 11.12 25 min

  • 问我投没投别的公司,我说就字节和滴滴,然后问我为啥没投其他厂,我说美团、阿里现在不招,腾讯感觉语言方向不太合适,不太想去。

  • 让我对自己的基础状况做个评价,我说我对计算机网络、MySQL、Redis比较熟悉,操作系统相对薄弱一些。

  • 问我考研专业课考了什么,我说只考了c语言和数据结构,还有部分算法,当时他听到后还挺吃惊的,又确认了一遍,觉得学的太少了,到这我就感觉不太妙了。

  • 手撕生产者、消费者模型,10个生产者,10个消费者,队列容量为30个,没写出来,这个怪我,之前看了一遍还手写了一遍,但是当时都给忘了,能有10分钟,没写出来。然后他说“你不是看过吗”,我说有点忘记了。

  • 讲讲同步IO、异步IO、(还有个IO我不记得名字了),从用户态与内核态的角度讲一下。(不会,都说了操作系统薄弱,还问我这种问题)

  • 项目为什么用SpringBoot。

  • 知道事务的传播吗。(没了解过)

  • 对于Spring你了解什么。我说了IOC和AOP,然后他问使用AOP的好处是什么。

  • 设计模式了解吗,说一下策略模式。这个我准备了,看的大话设计模式,举了满减、优惠例子,还说了抽象类、实现类、工厂类、客户端做什么,然后他说我说的不对,不是策略模式,我就问那我说的是什么模式,他说有点像模板方法模式,然后问策略模式的好处。

  • 说说自己有什么优势,好像是这么个问题,就是问学习状态之类的,我说专注、效率高之类的。

  • 问我能不能接受半年且没有转正机会的实习。听到这我挺火大,虽然三面面的有点稀碎,但我就这么差吗,半年就半年,连转正资格都没有,我又不是非吃你这口饭不可,然后我就说不太想考虑。

  • 反问:这块我就知道自己凉了,那既然都到三面了,也不能白来,你们部门干嘛我也不感兴趣了,又进不去,就问了下面试官对于面试者的考核问题,还问了下问什么三次面试都几乎没有提及Redis,是不是部门里用的少,他说不能说,然后说就到这吧,我说好,就结束了。

  • 结果:11.16接到电话了,说三面表现不好,面试官给的结果是待定,换个部门加面,然后约到了11.19号。

四面 40 min

  • 面试官说咱们先做个题试试,我说可以,我一说他啪的就把题目打在了公屏上,很快啊,然后上来就是一个"二维数组查找",一个"2*N铺瓷砖",一个"TopK",我全防出去了啊,防出去以后,自然是传统面试,点到为止,我已经准备背八股文了,他突然袭击,一记"还有别的方法吗?",打过来了,我大意了啊,没有背,当时流眼泪了,我说停停,我不知道。

代码:

  • 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
  • 我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?写出您的代码 。
  • 在100亿个无符号整数中取最大100个 topK Memory has limited. What’s time complexity of this solution?(题的原文就这样,一半中文一半英文,说思路就行,先问了有内存限制的情况,我说堆排序,他说什么堆,我说最小堆,他说时间复杂度呢,我说N * log K,他说要是没内存限制呢,我说快速选择, 他说时间复杂度呢,我说K,他说最坏的情况会到N方,还有别的方法吗,我想了一会,说如果均匀分布可以用桶排序,其他的不知道了,他没说话,就结束了。)

基础知识问题:

  • HTTPS加密过程。

  • MySQL为什么用B+数,不用二叉查找树、红黑树。

  • 知道pagefault吗。(没听说过这个名词,我说知道一些页的内容,您可以说说这是什么我可能知道一些相关的,他说知道页中断吗,这个词我也没听说过,我就问是"缺页"吗,他也没说话,我就说不知道了,但是我面完一查,确实是跟缺页相关的,他要是说是我又能背五分钟。。。怎么就不说话呢)

  • 反问:问这次发的邮件是”广告研发“,之前是”广告系统“,想问区别是啥,他说没区别。又问实习生多久参与上线代码,1-2个周。然后就完了,也没说过不过,就让等HR通知结果了。

最后

最后我为大家准备了java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书一起免费分享给大家!
如果有需要的朋友点击这里备注csdn,自行下载就好了
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jiagouwgm/article/details/114222208