前言

 

春招刚过,眼看着马上又要秋招了,所以打算总结一下自己的收获,顺便给大伙输出一些东西,希望对还没上岸的兄弟在秋招取得一个好的结果有一些帮助。不敢说多权威,只是权当给大家一个参考。

本文大概分为春招结果、面试指导思想以及面试经验,最后我会放一下我在字节跟腾讯的面试过程,给大家参考一下。

春招面试了这么多家公司的准备工作,面试题,以及一些公司的招聘信息和各公司面试偏重点我都有整理好,算是自己的一个小癖好吧,现在我已经上岸了,可以无偿分享给大家,祝大家都能早日拿到自己心仪的offer。

  • Java基础知识总结

  • 2021金三银四Java岗面试真题总结

  • 一线互联网公司Java面试核心知识点

 

春招结果

 

  • 收到 Offer 国内: 腾讯、阿里、百度、字节、美团、依图 外企: 微软、....、.... (还有几个容易被定位,就不写了)

  • 简历/笔试被挂 Airbnb、米哈游

  • 还有几个在等结果

  • 总共参与了 37场次 的面试

  • 投递岗位全部为后端开发暑期实习

指导思想

以下这些东西,或许听起来很“虚“,但我认为它们又是确实是有用的。

  • 招聘到底是什么?企业(买家)在人力市场上,向我们(卖家)购买劳动力这种商品。实质是一类交易。

  • 面试到底是什么?买家用各种方法“黑盒检测”卖家手里商品的各种质量参数,买家探测/质疑/挑刺卖家,卖家回应买家,双方交换、讨价还价,最终双方敲定是否成交(一般来说主动权在买方)、一个有明显固定套路的过程。

=> 和你爸妈去菜市场挑菜、买菜、讨价还价的过程,本质上完全一样。但要把自己代入小贩的角色。

=> 可以把你知道的、见到过的,所有相关知识都迁移到应聘这件事情上来。没吃过猪总见过猪跑。

=> 商品本身的质量 = 硬技能 = 简历履历、CS知识、八股文、代码能力、做算法题能力 展示 & 推销商品的技巧 = 软技能 = 怎么在讨价还价的过程中,成功地展示自己,最终把自己推销出去、卖掉。

=> 根据整个面试流程的特征(比如检测商品质量的方法是黑盒检测),根据预期准备时长和自身基础决定策略,以最大化单位时间效率作为目标,对两种技能分别准备。最终目标就是把自己“卖掉“。

  • 到底应该从谁的角度出发来思考?

例如,我们参加实习面试当然还有其他目的,比如感受公司氛围、学技术或者刷简历等 但是,这些意义仅是站在我们的角度才make sense的. 对于大多数普通卖家(我们)来说x,主动权仍是在公司(买家)手里的,所以我们从谁的角度出发来思考,也不言而喻了。

具体工作

  • 硬技能

简历履历

最重要的指标例如学历/论文/获奖,在开始准备面试时,基本已经定死了。

我们能主观上改变的地方在哪里呢?考虑一下面试过程的特点,几乎所有面试官都会或多或少根据简历上的点来针对性的问你。根据这个特点进行写简历/准备面试,就行了。我想到的就这些。

八股文

 

有3种策略。【不要一看到“s死记硬背“就觉得是最差方法,而是要根据对应八股的出现频次来灵活采用不同策略】,要不断提醒自己,【目标函数是,在有限的时间限制下和自身基础限制下,最大化时间效率】。

具体策略

低频八股: 短时间理解不了,直接死记硬背。若时间紧张,果断跳过。

中高频八股: 把中学时候那套背诵技巧拿出来,比如编各种口诀辅助记忆。或者适度花时间去适度理解。 例子:待补。

高频八股: 花较多时间、精力深入理解,理解体会背后的设计思想、逻辑 + 反复背。

很多问题在英文搜索引擎上会有更优质、更能帮助你理解的解答。

个人准备时长:半个寒假

算法题

市面上有统计各公司面试算法题出现频率的网站,按从高频到低频的顺序进行准备。

个人准备时长 Leetcode: 断断续续做了有四个多月,共300+题。

做完后,对于高频的一百题不到,去看了题解区的题解,然后根据自己的实际情况,逐一写了自己的题解笔记(思考路径、易错点等)

项目

随便找了个以前写的网站项目。如果你找不到项目写,可以看看我之前写得这篇GitHub收藏最高的10个Java练手项目推荐。私信“秋招”就可以领取了。

然后多看面经,把常见的项目相关的问题整理出来,预先想好怎么回答。面试的过程中不断增补即可。

  • 软技能

首先还是要明确观念

面试主要的内容就是买家不断通过交互式的试探"商品"质量。

注意,这是一个动态的、交互的过程y, 而不是一个静态的过程,并不是等同于做一张题目都打印好了的固定“试卷“。

个人通过大量面试发现,基本所有面试官面试,都或多或少存在【骑驴找马】的现象。也就是说,面试题并非像一张打印好的考试卷一样,是完全静态的、固定的x,而是动态的、交互式的。面试官(或多或少)会看着简历,或根据谈话内容,来选择下一步的面试问题。如果你能提供给他提问的方向,面试官也乐于省得动脑子找问题来问你。

这就给了我们交互引导的空间。要让话题往利于你“推销卖掉”自己的方向、展示出自己好的一面的方向走。

面试官问了一个你不会的东西,不要直接说不会,而是把你知道的能扯上关系的东西,主动地给面试官讲。最差的应对措施就是直接说“不会”了事。

对于你自信的、想让他问的东西,想办法在谈话中往那边引,让面试官往那个方向问。 有时会碰到,面试官直接问你,“你觉得自己有什么擅长的知识领域“,能就更省事了。

有时会碰到,面试官问你,“你对XXS方面的知识熟悉吗”,如果熟悉,当然作肯定回答Y。如果不熟悉,不要只说自己不熟悉就完事了。你完全可以趁机会说出你熟悉的领域,完成提问方向的引导。

总而言之,要充分发挥我们的主观能动性,而不是被动地、等着面试官像出试卷题目一样,一条一条地问你

读者可以自行举一反三

  • 面试之外的技能 和 HR 沟通 :

同样要明确观念,不要当一个单纯的被动执行者。在面试时间、整个应聘流程时长、甚至 Offer 本身上,其实都有可能通过各类沟通改变。谈与不谈,可能就嘴皮子上下翻两下,却可以帮助你节省几周的苦苦等待时间。总之,想方设法充分发挥自身主观能动性。

复盘。记录每次面试全过程,事后复盘总结

多用已有 Offer 进行 argue,包括对面试官 & HR。能省的可能不只是等待时间。

字节面试过程

 

一面(65mins)

  • 自我介绍

  • 项目中怎么用的这些开源算法

  • 项目中的场地检测和自动取弹算法

  • 问:会不会数据库,问个简单的问题,在数据库操作数据的时候,什么时候可以利用索引?

  • 问一下计算机网络,TCP的连接过程(详细聊了三次握手和四次挥手)

  • 为什么有time_wait,没有会怎么样

  • 说一下TCP的拥塞控制

  • 刚才说到了TCP是保序的,是靠ack还是seq

  • https是比较主流的因特网协议,聊一下https的加密过程(只说了一下https的加密特点,答得不好)

  • 了解http2.0吗,和http1.1有什么区别(只聊了http1.1的特点,http2.0说的不好)

  • 再聊一下操作系统,说一下死锁的必要条件

  • 聊一下死锁的避免(银行家算法)

  • 操作系统中你了解那些锁呢?(介绍了一下信号量机制,互斥信号量同步信号量,然后具体的读写锁互斥锁自旋锁答得不好)

  • 了解linux吗,用什么命令查看当前系统进程(答平时只是使用linux写一些代码,没有深入了解过)

  • 做道题(L474零和一,二维01背包)秒了

二面(55mins)

  • 一分钟介绍一下自己

  • 你是怎么使用开源库的,你所说的对开源库的优化能说一个具体的例子吗?

  • 说一下进程和线程的区别

  • 知道协程吗

  • 进程间的通信方式有哪些

  • http的状态码了解吗,说一说3开头的状态码,300,301,302的区别,304详细说一下

  • http请求方法GET和POST的区别

  • 刚才说到幂等性,了解PUT和DELETE吗,他们是幂等的吗

  • 数据库了解吗?redis了解吗?(答在学,问会多少,答一道题都还没做过)

  • 聊一下overload和override

  • 智能指针了解吗,说一说

  • 指针和引用的区别了解吗?说一说

  • 了解哪些设计模式(没有专门了解过,略了解一些单例模式)

  • 单例模式是把构造函数作为私有函数,那么如何没有对象就调用类的函数呢(static)

  • 还了解其他的设计模式吗(真的不会了...)

  • 了解LRU和LFU吗,LRU用软件实现如何设计数据结构

算法题

  • 找到第K小的数剑指 Offer 40. 最小的k个数,秒

  • 无重复的最长字串,秒

如何评价自己

反问

  • 如何评价我

  • 想要适应岗位需要提高哪方面能力

其实面试官中间问了很多其他的问题,***了解吗,因为我没有听说过,所以面试完就回忆不起来了。

三面(45mins)

  • 自我介绍一下

  • 项目相关,问了某个项目的核心内容,具体实现

  • 设计一个排行榜的数据结构,能够快速给玩家加分加分并且更新前100的玩家

  • 10G的url黑名单,url是64字节,现在给你一个url,如何快速判断在不在黑名单里?

  • 追问:你知道布隆滤波器吗?

  • 问了个数据库分表相关的设计题,我没有学过数据结构,感觉回答的不对

  • 最后做道题吧,一道滑动窗口题,注意回滚

  • 反问

HR面(22mins)

这个没什么可说了,因为到这里意味着基本已经稳了,剩下的无非就是待遇的问题,随便聊就行了,当然,别把天聊死了。

腾讯面试过程

 

一面(1.5h)

自我介绍

  • 项目

  • java hashmap源码

  • java 常用集合和部分源码

  • spring源码分析怎么解决三级缓存

  • springboot启动原理

  • java垃圾回收

  • jvm内存结构

  • tcp三次握手,四次挥手,超级详细,尤其是第四次挥手

  • tcp和udp,详细介绍udp,报文大小多少,为啥。http 数据包大小,为啥。

  • http常用状态吗,502是啥

  • https加密的详细过程

  • 操作系统调度算法和饥饿问题

  • 操作系统虚拟内存,虚拟地址。

  • redis数据结构,底层数据结构

  • mysql索引相关的

  • linux常用命令

  • 算法,寻找数组中重复的数字

反问

二面(1h10m)

  • 自我介绍

  • 详细介绍项目,项目一些问题会深挖,然后问一些解决方案

  • tcp四次挥手深问

  • 32位操作系统里进程可以分配内存大小,为什么。

  • epoll底层数据结构,原理

  • 生产遇到问题及解决方案

  • 操作系统虚拟内存,虚拟地址深问

  • 算法,1面算法的变种

  • 反问

三面

我记得是腾讯三面面试官约我面试时间,但是我当时在面试另一家,一直没接到电话,我回打很多次一直占线,过了半小时发感谢信了...不过也只能怪自己

总结

其实面试了那么多家公司之后,发现这些大厂的要求都差不太多,抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方。

  • Java基础

  • 计算机基础

  • 数据库

  • 常用开源框架

  • 分布式/微服务

  • 中间件,缓存、消息中间件

只要把这些都大致掌握,然后针对你要面的岗位做一些侧重复习,拿到手的offer都不会太少和太差的。

然后腾讯特别喜欢操作系统和网络,字节和虾皮喜欢算法,网易喜欢问框架。面试完没有整理,很多都忘了,把自己记得的写了下来

就写到这吧,后面有机会再跟大家分享面试的一些趣事和经验。

最后,需要资料的朋友们看过来,

【获取方式】“查看下图”即可无偿领取以下资料

 

end