面试经验|个人秋招经验和面筋分享
51642
2021.09.03
2022.03.02
发布于 未知归属地

2022-03-02

后悔了兄弟们, 研究生不考真的是一部差棋, 说实话大厂算不上什么终极目标, 不过是人生的一个摆渡站台, 学历提高才是护城河。 个人准备工作一年安定下来之后, 在职考研华五,同时申请港三和新二。 给大家作为参考。
之所以之前焦虑到找工作, 说实话是有一种不确定的恐慌感。 家里条件不算很好, 害怕考研失败之后,一方面是工作难找, 二是父母也不太支持考研失败去留学兜底, 所以感觉这东西一旦没上就寄了。 现在自己有条件为自己兜底, 更多的是考虑学历带来的潜在价值了, 不仅是一种证明或者门槛, 也会为人生带来更多选择, 毕竟现代人寿命平均不会低于35岁。


今天收到了shopee的意向,意味着我的秋招,更准确说是提前批,全部结束了,开始摆烂。

其他offer比较早,有六月份的tplink的sp+5k,有七月份字节跳动国际化电商后端开发、拼多多后端开发,后两个暂时不知道总包多少,还没正式谈。

其实还面试了腾讯PCG部门,但是三面挂了,而且三面面试官有点不尊重人,高高在上,一直怼,然后他那边也不开视频,我就对这黑屏腾讯会议的界面balabala...


个人感觉自己的秋招还是非常忐忑的,说一下本菜鸡的心路历程。

985网安本科,

提桶跑路典型人员,大一从土木run到网安,其实对网安没啥兴趣,只是当时评估了下转专业政策觉得网安比计算机更稳。

无实习,无论文,gpa中上,差保研可能10%,有几个水的比赛、项目。

(同学院的可能已经知道是谁了,有点明显)

今年一二月份开始疯狂焦虑,因为不能保研,感觉自己也挺菜,就准备考研了,整整三个月我成为了一名科憨,因为我不想搞算法,所以科软、旦软、东南是我的几个关注对象。这三个月张宇过了两遍、单词也快两边,然后408除了计组都看了一遍,最简单的感觉是408(除了计组),很多题目特别是数据结构和计网的说实话对于科班难度确实不算很大。所以科憨们要感谢少了一个强(fei)有(chang)力(cai)的竞争者哈。

然后四月份一直在思考自己到底怎么走。如果考上了科软,多了一个硕士文凭,但是互联网公司给的评级主要还是看能力(这里特指普通的后端、前端等岗位,except算法、天才少年),所以自己本科也其实可以进入所谓大厂,然后拿部分sp的。有了硕士文凭当然更好,考到更好的学校,在编制方面、相亲方面、甚至是所谓的面子上都更有优势。

但我比较担心失败,考不上就等春招零零碎碎的补录,然后浪费了太多时间。然后自己的求职目标其实也就是互联网这一块,至于35岁之后,去学校门口摆个烧烤摊吧,这方面我还是比较坦然的。另一方面,最近也有互联网行业焦虑,众所周知,工科==计算机,各行各业的人都涌进来(比如跨考科憨),这里没有恶意,只是描述一个现状。加之目前CN互联网似乎已经进入了存量市场,缺少新的增长点,因此对于即将到来的“工程师红利”,我还是想先占个坑位。(后来面试的时候也是有意的选择一些偏国际化的部门或者企业)。

准备秋招前,还有个小插曲,看到学校有个(3+2)早稻田的项目,一开始心动不已,因为相对于正常读研流程节省了两年,另一方面是不需要考虑考研失败的问题,只是花些钱。后来发现这个项目是去早稻田在北九州的乡kaka研究所,顿时蚌埠住了,可不想花了钱去不了东京还去体验乡村生活吧。另一个放弃这个想法的原因是我问了朋友、辅导员,其实总体来说他们都认为早稻田理科研究生的title不是那么厉害,国内就业不如考个本校。

OK,五月开始正式准备提前批。每天大概三道leetcode,到七月左右加上以前的刷了350题左右吧;然后准备JAVA系列的后端八股文(JAVA基础、并发、JVM、调优)、中间件八股文(Mysql、redis、Zookeeper、Kafka)、基础知识八股文(计网、操作系统、Linux原理、调优、操作、设计模式、数据库)、框架八股文(Netty、Spring)、分布式八股文(分布式理论、分布式事务、分布式锁、分布式id、分布式算法)。

六月正式开始投简历。此时,我对于自己面试的能力非常不自信。所以第一个投TP-LINK,因为这公司比较看学历,相对问的不是特难。我只能说这一阶段非常非常幸运,虽然最后不太会去TP-Link,但是面试这个公司感觉足够尊重、也找回自信。一面遇到个面试官,老婆是和本人同校的,问了几道智力题、简单dp、基础JAVA问题就完事儿;二面遇到的面试官,自己是和我同校的,问了问项目,然后也是智力题,然后问了不多的八股;三面没什么说的;整个过程很顺利,自己面完了其实也知道能够过,但惊喜的是HR打电话说是sp+5k,还是非常兴奋的,这是我第一个offer。

后面陆陆续续投递了腾讯,虾皮,字节,pdd;面经不表,可能后续贴上来。个人感觉,字节就是高强度算法题+八股+设计题,二面上来先写三道算法,写不出来走人;虾皮就是八股浓度拉满,当然也会有结合项目的灵活问题(项目用了Zookeeper,就问道了zab协议整个细节,用到了限流算法,就会让我自己写一个令牌桶限流(代替手撕算法环节))。虾皮面试至少我遇到的所有面试官都挺有素养的,很会照顾面试者的情绪。

八月初到现在摆烂了很久了,每天就是学学Go语言,健身,高强度极地大乱斗,只能说目前这个选择没后悔。但我知道做任何选择我以后肯定会后悔的,所以我始终对现状满意。

部分面经:

**后端开发-国际化电商(TikTok) 深圳 **

一面 7月20 1h30min

  • Linux 文件系统相关,inode结构,软硬连接,以及文件描述符是什么,怎么去修改,最多允许多少?
  • Linux 读写数据的整个流程,内核状态切换;Mmap(内存映射)和sendFile函数零拷贝什么原理?
  • Linux是内存管理是怎么样的?虚存是什么,虚拟地址->物理地址的整个流程是什么?
  • Linux说一说fork这个函数,返回什么;父子进程之间资源是共享的的吗?父子进程之间怎么用匿名管道通信?
  • 父进程死掉子进程会怎么样?子进程挂掉父进程呢?知道僵尸进程吗,Linux会怎么处理?
  • 数据库隔离级别,Mysql怎么去实现的
  • 一道SQL语句题目,要求我建立合适的索引,并解释为什么(实际上考察B+树结构、最左前缀等知识)
  • 一道SQL语句题目(具体忘了),有多个SQL语句模拟ID分发器的业务,判断在默认隔离级别下会不会存在并发上的问题(实际上考察的是innodb的多版本并发控制机制)
  • 一道SQL语句题目,好像是一个update语句和一个select for update,然后判断是否有问题(实际上就是考察gap lock),建议看极客时间有个比较出名的Mysql36讲。
  • 一道智力题,(had never seen),题目:一个猴子,离他的家直线距离是50m,然后猴子旁边有100个香蕉,猴子身上最多能够背50根香蕉,猴子每走1M必须吃一根香蕉补充能量,问猴子最多能够带回家多少的香蕉?
  • 一道算法题,如下图

image.png
image.png

二面 7月26 65min

  • 限时35min,写3道题目。

  • Leetcode61,旋转链表,时间复杂度O(n),空间复杂度O(1)
    image.png

  • Leetcode86,分割链表,时间复杂度O(n),空间复杂度O(1)
    image.png

  • Leetcode670,最大交换
    image.png

  • 计网问题,七层协议栈是什么,每一层作用;为什么要分层呢,说说你的理解

  • 后面忘记了问了什么,反正就是在聊计网,但是不是八股,偏个人理解的那种

  • 聊一聊跨域,知道JWT吗,什么结构?

三面 8月1 65min

  • 项目问题,挑一个觉得最好的详细说一下;然后是一系列追问(15min)
  • TCP,UDP特点和区别,分别不同的用途举例
  • 说一说TCP窗口,本质是什么,怎么用窗口实现流量控制的?
  • 拥塞控制算法,然后扯到了BBR算法,Linux怎么去启用?
  • 三次握手过程以及状态详细说,三次握手的时候,如何一定程度上去优化SYN攻击?Tcp的一些内核参数,知道哪些?(tcp_syn_retries/tcp_syn_cookies/tcp_fastopen/backlog)在Linux中怎么去看?
  • 四次挥手过程以及状态,Time_Wait状态是什么,有什么用;出现大量Close_Wait可能是什么个情况?
  • redis设置高并发抢单一的东西,如何避免高并发对一个键进行访问?
  • 怎么去设计一个扫码登陆的功能?
  • 智力题,64匹马,8个赛道,通过赛跑可以一次知道8匹吗速度的相对顺序,问至少赛多少次,可以找到最快的4匹马
  • 智力题,在一次战争中,我方发现执行任务回归的战斗机大多机翼中弹,是否要针对性的加固机翼?
  • 算法题,leetcode76最短覆盖子串
    image.png

**Shopee深圳-后台开发工程师 **

一面 7/14 60min

  • 自我介绍
  • 项目介绍,项目难点,怎么解决
  • 细说zookeeper,怎么选举的(ZAB协议)?
  • ZK如何保证其一致性?
  • Zookeeper除了元数据储存还有什么用?
  • 口述具体怎么用ZK实现分布式锁,你知道redis怎么实现分布式锁吗,说一说,这二者有啥区别?
  • redis你项目用了哪些数据结构,说一说底层是怎么实现的?
  • redis主从复制细节
  • mysql事务特性(ACID),以及Inodb如何去保证这些特性
  • innodb引擎索引实现结构,为什么B+树而不是B树?
  • Linux常用指令,查CPU,硬盘情况,用户权限;
  • 算法:类似于leetcode第三题

二面7/21 60min

  • 自我介绍
  • 细说一下你写的RPC框架整个调用流程,负载均衡有哪些策略?如何进行的失败重试和限流的?
  • XSS说下,如何注入,以及分别从前后端考虑如何防止XSS注入。
  • CSRF说下
  • HTTPS相比于HTTP的优势?
  • HTTPS详细握手过程,CA证书存放的位置,TSL1.2和TSL1.3的主要区别,对称密钥和非对称密钥等
  • 知道HTTP3吗?QUIC主要解决什么问题
  • TCP为什么称之为可靠传输?
  • 流量控制如何实现的?
  • 拥塞控制算法?还知道其他的吗?-BRR算法
  • 设计模式,手写你觉得最好的单例,以及问了volatile关键字底层实现
  • 设计模式,看你用了netty,说一下Reactor模式,以及适用于什么场景,不适用于什么场景?
  • 拉家常,你负责的比赛项目是如何组织的,怎么分配任务,遇到问题如何解决的?
  • 一道设计算法题:用redis手写令牌桶限流算法,目标是一个特定IP可以在N秒内获得的令牌总数是X,获取成功返回true,失败返回flase .(一般估计不会问,前面回答限流算法给自己挖坑了属于是)
  • 反问:
  • 技术栈?GO主要;其他看业务需求,公司没有语言的强制要求
  • 表现如何?:笑

三面(hr)7/26 20min

评价下你之前的面试
为什么想来虾皮,你对虾皮知道多少?
为什么不考研捏?
朋友怎么评家你?
有什么缺点?
你是哪儿人,为啥报深圳岗位?
大学成绩咋样?
有其他Offer吗
期望薪资

拼多多
//TODO
tplink
//TODO


补充:八股文准备经验(没更完

秋招期间个人总结的资料来源不一,为了避免麻烦我就不发了。不过我说下我八股学习的思路吧。

JAVA方面首先得会基础(随便看什么书,培训班教程也可以),并发的话如果只是应付面试极客时间有一个课程叫做JAVA并发(好像是这么个名字,忘了),jvm就那本经典的深入理解JAVA虚拟机(重点是内存管理,垃圾回收,常用监测工具,类文件结构,类加载机制),然后有时间可以看看effective JAVA这本书,可能要很多面试会用到的知识。最后知乎或者博客搜一搜hashMap,concurrenthashMap,ArrayList,LinkedList等到源码分析,有闲心可以自己写一个hashMap,Lru,Lfu(有些面试可能会让你写)

JAVA框架没啥说的,我就学了spring和netty,我没看spring源码,主要是觉得它太重了不想学。学的时候主要注意一些设计思想和设计模式。推荐github JAVAguide项目,有这方面的内容。netty我是看的李林峰的Netty权威指南。

中间件,mysql强烈推荐极客时间的mysql实战45讲。当然前提是自己先得有一些数据库的基本知识。redis我以前刚学看了黑马的redis教程,还行。然后如果要对其原理了解的话,还要redis设计与实现这本书,重点是看一下数据结构和对象这一章节。然后有个比较重要的问题是redis和mysql双写一致性问题。可以去知乎搜博客。以及用redis如何写分布式锁;redis如何实现简单消息队列,有什么缺陷。zookeeper如果你项目没用的话,看看网上的教程简单了解下就行了,然后知道怎么用它写分布式锁或者分布式id. 消息队列分理论和具体中间件选型,理论大致有:为什么用消息队列,消息队列的推拉模式 ,如何保证消息不丢,如何处理重复消息,如何处理消息堆积等。然后具体我学的是kafka,看了极客时间的有一个课程。

计网和操作系统,如果是科班的强烈推荐公众号“小林code”里的操作系统和计网两本电子书,(小林code打钱),真的是总结的很好。不是科班或者计网和操作系统学的不够好,那可以先买个考研的王道教程看一看重点章节。

设计模式,我发现一个很好的网站学习设计模式,百度搜索“设计模式与重构”,应该能搜到,是个ui很好看的国外网站,每一种设计模式都有具体的情景,框架图,优缺点分析,然后有各种语言实现的小demo.不过设计模式不能单学理论,比如你学一个框架的时候,就要知道哪部分用了什么设计模式,为什么这么设计,比如netty的reactor和责任链,spring的动态代理等等。个人感觉单例模式比较容易问道,有5中不同特点的实现方法(JAVA),可以知乎或者博客搜索学习。

至于分布式嘛,其实比较玄学,对于本科生来说其实基本难有高并发的实战经验。要应付面试造火箭,那么总体来说就是掌握分布式基本理论(CAP,BASE等),分布式id,分布式事务、分布式锁、分布式算法(Raft)、分布式缓存。上述知识我一方面看的极客时间的分布式教程,一方面是积累的各种博客。然后,分布式架构相关的,可以从RPC入手,学习其核心原理、以及服务治理相关内容,我看了李林峰的分布式服务框架这本书以及极客时间的RPC相关的一门课程。

分布式如果不准备停留在吹牛逼的层面,时间足够,那么推荐MIT的6.824,照着课程和论文手撸K-V数据库和RAFT协议,很有帮助。

评论 (90)