活久见,大佬4面字节畅通无阻直接拿offer,附上大佬的面试感悟!

前言

首先在这里介绍一下这位大佬,他是之前就在看我博客的一个算是粉丝吧,自己是湖大毕业的,自己在学校里面就经常趁着假期去找各种实习的事,非常好学的一个人,平时有什么不懂的就来问我,我也很乐意解答,他是去年毕业的,前一段时间找我吃了个饭,告诉我自己进字节了,说实话我还是有点惊讶的,毕业一年进BATJ,这不是大佬是什么,下面附上大佬的面试感悟以及复习资料!

image

我这里还准备了一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套大厂面试题(不断更新中),希望大家都能找到心仪的工作!有需要的朋友点击这里备注简书,自行下载即可,希望大家面试顺利,拿下自己心仪的offer!
image

一面 11.10 :44 min

  • 说下项目。

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

  • DNS查询。

  • DNS投毒。(不会)

  • 堆和栈的区别。

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

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

  • 多线程的参数。

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

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

  • Redis字典结构、扩容。

  • HashMap解决Hash冲突的方法。

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

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

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

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

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

代码:二选一,做的第一个,没bugfree,改动了一次,挺遗憾的。

  • 字符串最长子串

输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

  • 给定一组正整数,重新排列它们的顺序然后组成一个最大的整数

输入: [11,5] 输出: 511

输入: [3,30,34,5,8] 输出: 8534330

  • 反问:

问部门语言

是不是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状态来消耗服务器内存,他问我确定是内存吗,我说是吧,不太清楚)

代码:基础题型,Bugfree。

给定一个仅包含数字0−9 的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。

例如根节点到叶子节点的一条路径是1→2→3,那么这条路径就用123 来代替。

找出根节点到叶子节点的所有路径表示的数字之和

反问:

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

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

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

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

三面 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",我全防出去了啊,防出去以后,自然是传统面试,点到为止,我已经准备背八股文了,他突然袭击,一记"还有别的方法吗?",打过来了,我大意了啊,没有背,当时流眼泪了,我说停停,我不知道。

代码:

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

基础知识问题:

  1. HTTPS加密过程。
  2. MySQL为什么用B+数,不用二叉查找树、红黑树。
  3. 知道pagefault吗。(没听说过这个名词,我说知道一些页的内容,您可以说说这是什么我可能知道一些相关的,他说知道页中断吗,这个词我也没听说过,我就问是"缺页"吗,他也没说话,我就说不知道了,但是我面完一查,确实是跟缺页相关的,他要是说是我又能背五分钟。。。怎么就不说话呢)

反问:

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

最后

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的,在我看来,自己付出多少,回报就有多少。

最后提供免费的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。有需要的朋友点击这里备注简书,自行下载即可,还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书一起免费分享给大家!

image

推荐阅读更多精彩内容