二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

字节跳动的offer到底有多难拿?

是二本院校非科班的,从简历被拒,到拿下头条面试,我花了整整一年的时间。

内推被拒,正如我标题所说,简历被拒。去年3月份在知乎上看到一个头条大佬说可以内推春季实习,于是私信并发了简历给他。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。(打扰了)

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

准备面试

其实从三月份投递简历开始准备面试到四月份收offer,也不过1个月的时间,但这都是建立在我过去一年的积累啊,无数次的通宵自习室,图书馆的专属椅子都被我坐的陷进去。避免误导大家,这次也不做标题党,写了准备一年,踏踏实实干事。

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

以下是我去年给自己订的学习计划:

一月:

大数据入门

整个一月份都在刷入门视频和《Hadoop权威指南》,又临近期末,每天5点半起床,看两个小时的视频然后上课或者复习期末考。

二月:

剑指offer刷一遍、数据结构、JavaSE、JVM、多线程

①剑指offer有些搞不懂的直接跳过,等下个月第二遍再刷;

②数据结构重点是各种树、二叉树、红黑树的一些特性以及链表的特性;

③JavaSE主要是类对象接口的区别,能不能继承,Static的特点,各种Hashmap,ArrayList等集合框架的原理源码;

④JVM是根据网上整合的高频面试题进行学习的,刷了一遍面试题之后才去看周志华的《深入理解Java虚拟机》

⑤多线程也是刷网上面试题和博客的

三月:

剑指offer二刷,数据库、操作系统、网络、准备面试

①剑指offer第二遍重点刷第一遍时思路懂代码不懂的。

②数据库刷了牛客网SQL实战100多题的,其他都是索引原理,悲观乐观锁等理论。

③操作系统刷高频面试题。死锁的产生条件、解决方法等等,资源调度算法,并发和并行等。

④网络也是刷面试题。三次握手四次挥手以及为什么要这样做、TCP和UDP、网页请求过程、DNS解析过程、网络模型、响应码的意思等。

⑤我每刷一道算法或者理解了一道面试题都会进行整理,所以到面试之前看看整理的文档和博客就行,异常轻松。这个月也继续投递简历进行面试,从三月份开始都是边投边准备,不存在全部准备好再去投。

三月份收了美团、瓜子二手车等二线大厂的offer。

四月:

大数据项目、手写剑指offer、继续面试

①三月份被阿里菜鸟部门的三面面试官怼了一发,说简历没有大数据项目面大数据岗,理论会再多有什么用,于是打算在四月份补一下项目。

②在补项目的同时,不忘算法,练习白板写代码。

四月份收了腾讯、去哪儿一些offer,腾讯和去哪儿终面都得现场面,所以一天飞北京,一天飞深圳。拿到腾讯offer的时候跟HR商量能不能去上海或者北京的base,HR说不行,于是就没去了。选工作和生活城市有一个硬性标准:离家远!那些在北方读书的同学毕业之后一直要往家里跑,而我则是一直往外跳,或许是因为在厦门待了四年吧,家乡也是「围城」啊。

5-12月:

实习,看框架源码,面试,整理面经

最后选择了去Kyligence实习了,刚好趁这个机会学习了Kylin源码,看了Hadoop和Spark的部分源码。后面的面试也是为了倒逼自己学习,在面试中找不足,也顺便整理了一些面试资料。

总结:

一定要列好自己的学习计划,也要学会根据自己的学习情况调整计划。项目是面试的敲门砖,也是面试的大头,我是从大二出去实习的,所以在项目这边可以花较少的时间,不用从零开始学。底层理论一定要会,不然大厂无望。算法一定要硬刚,总共就那几种题型,我刚开始也很抵触的,觉得太难了,后面迎难而上也就那么回事。

以上是我过去一年的准备,说说我从投递简历到收offer这一个月的准备。

1.复习算法。把以前刷过的算法题分类整理了一下,因为之前有整理过,所以复习起来没用多少时间,还特意去理解了长长的KMP算法,LRU算法。

2.复习理论基础。除了复习整理的面经和资料之外,还特意去了解了一下Golang,因为头条用的go语言。

3.特意准备了几个项目技术难点,能在面试的时候炫一下。

4.资料准备

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

各大厂的面经

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

二本院校非科班的,从简历被拒,到拿下头条面试,我花了一年时间

 

这些也都可以找小编分享一下,转发此文让更多在求职的程序员看到!

 

一面

  1. 在校项目后端是怎么搭建的
  • 答:tomcat,springboot, mybatis
  • 备注:
    这里没答好,应该扩展一下,说当时大三水平有限没有做高可用,如果现在做会用VIP+双ng+双服务做简单高可用
  1. “小程序不支持缓存二进制,因此将小图片BASE64编码后缓存到本地”,还有没有其他优化方案
  • 答:优化方案是CDN,讲了CDN大概原理
  • 备注:
    还可以答图片压缩
  1. 结合项目讲下加解密方案
  • 答:讲了非对称加密(两种应用场景)、数字摘要、数字签名、对称加密、SSL,讲了很久
  1. 报表接口怎么写的,怎么支持免部署灵活修改
  • 答:各种CASE WHEN、IFNULL,把sql存数据库,从db取出sql再执行,有管理后台随时改
  1. es怎么聚合计算
  • 答:不会
  1. es怎么做range查询
  • 答:讲了es的分片、路由,暴力range方案
  1. es分词原理
  • 答:答了分词过程、倒排索引等
  1. new一个对象的生命周期
  • 答:讲了jmm,答了很久
  1. 老年代除了空间不够,还有什么时候会触发fgc
  • 答:System.gc()也会触发,生产环境一般叫DisableExplicitGC禁用System.gc()
  1. 新生代的对象年龄达到15的时候,会晋升到老年代,为什么是15?
  • 答:应该是经验值,如果定得太小,可能对象到了老年代之后很容易死亡,如果太大,可能对象在新生代一直复制,增加开销
  • 备注
    正确答案,应该是因为对象头的markword部分,存分代年龄的age字段的二进制长度是4,所以最大值是15
  1. mysql为什么要有最左前缀原理
  • 答:是B+树的结构决定了最左前缀,答了mysql的页结构(空闲区,用户记录区,页目录..)、索引结构、聚簇索引、二级索引,答了很久
  1. 算法题
  • 父串里找子串,即indexOf 答:没写出KMP,写了暴力
    备注:
  • 面试时,有提问“子串不存在时返回什么”,“子串出现多次是否返回第一个”,还有一个特殊情况没有考虑到:子串为空字符时返回什么
  • 还有比KMP更快的字符串匹配算法: BM(Boyer-Moore)算法 暴力代码运行通过后,让我回忆KMP,没回忆起来,只说了有个next数组...

二面

  1. 结合项目问
  2. 项目里F5怎么实现会话保持
  • 答:加cookie
  1. 追问ISO七层模型,F5加cookie在哪一层,ip hash在哪一层
  • 备注:
    cookie是http协议才有的,所以在应用层ip hash有可能在应用层,也可能在网络层,如果是client->lb lb->server这种模式,就是应用层,因为需要重新发起http请求,如果是通过DNAT协议修改目标地址实现的,那就是网络层
  1. F5跟Ha区别,为什么F5性能比Ha好,硬件配置相同的情况下,F5还比Ha好吗
  • 备注:
    “为什么F5性能比Ha好”当时没答出来,正确答案应该是一般情况下,F5是四层负载均衡,Ha是七层。但是F5也可以七层负载均衡,这个时候性能应该不会差太多
  1. lvs的dr模式
  2. keepalived的VIP漂移原理
  • 备注:
    没答出来,答案是VRRP协议
  1. 讲自己比较擅长的技术
  • 讲了innodb页结构、索引原理
  1. sql调优经验
  2. 项目整个数据库的最大的表有多大
  3. 微服务框架熟悉哪个
  4. 看过哪些源码
  • 答hashmap,问hashmap的容量为什么是2的n次方
  1. 最近在学什么,为什么学
  2. 怎么理解高可用
  1. 面试官:你有什么要问我的吗
  • 问:有哪些方面需要补强
  • 面试官:项目比较传统,其他还好

三面

  1. 介绍项目难点
  2. 零拷贝
  3. FGC的几张情况,怎么排查问题
  4. 手机刷抖音的时候,视频突然卡住,有哪些原因
  5. 为什么离职
  6. 没有算法,总共半小时差不多

总结

准备好一些高频问题,包含技术类和非技术类

  • 技术类:
  • 看过哪些源码
  • 对哪个技术比较熟悉
  • 最近在学什么,为什么
  • 项目有哪些地方需要改进
  • 项目有哪些难点
  • 怎么应对突发流量

非技术类:

  • 平时怎么学习的,新知识怎么学习
  • 自己有哪些优缺点
  • 同事怎么评价自己
  • 为什么离职
  • 还有什么要问的

介绍项目技巧

  • 讲项目一定要慎重,讲太深的话,任何一个名词,面试官都可能深入提问,导致自己答不上来;讲太浅的话,面试官会觉得项目难度不够,没兴趣听;
  • 说项目的时候,说完痛点,然后说解决方案一二三,以及各自的优缺点,最后生产选了什么方案,面试时,逻辑是否清晰也是很重要的考察指标;
  • 突出对业务的深刻理解;
  • 用具体的数字说明情况,如qps、db数据量等;
  • 把八股文穿插到项目里

算法题技巧

  • 注意代码规范,比如注释先行(先写注释再写代码)、对特殊情况的返回值写好注释(比如入参为空时返回什么)
  • 善于向面试官提问,体现自己的逻辑能力,以“从父串寻找子串为例(即实现indexOf方法)”,可以提的问题有: 子串在父串中没有出现,返回什么 子串为空,返回什么 子串出现多次,是否只返回第一个位置
  • 如果时间足够,按上面的来,如果时间不够,就不要考虑太多边界情况啥的,能过一个case就行

其他技巧

  • 语速不要太快,不然面试官理解不了;
  • 至少要有一个功能足够牛逼,可以吹很久很久,问项目难点等时候才可以吹;
  • 至少要有一项技术足够深入学习,redis、mysql、jvm...都行,吹上了就大大加分;
  • 回答问题的时候,先说结论,再说过程,知道结论的前提下,听你讲过程,容易理解;
  • 不要一开始就投一堆公司,很可能面完一两场发现简历需要修改;
  • 大厂hr面不要撒谎,hr相当专业,很容易看出来;
  • 面试其实就是八股文、项目、算法三个方面,三方面都没问题,那就稳了。八股文可以背,项目可以包装,但算法只能靠积累。想进大厂,先刷题,半年起步。

常见问题示例

一个关于如何进大厂的小建议

我一直崇尚「曲线救国」的做法,也一直在向别人传播这种做法。现在能力背景不足没关系,只要规划好自己的学习路线,一步步阶梯式往上爬,总可以实现目标。因为我自己二本出身,但我意识得早,大二就开始实习,用项目和实习经历弥补我背景不足,然后一步步走到「offer自由」。很多时候并不是只有巨人才可以成功,你只需要做到行动上的普通人,就可以超过很多思想上的巨人,行动上的矮子。

1、做到不被同学影响的去学技术,做到和朋友、陌生人多交流,学会做人。

2、网上多找最新的学习视频,多做项目,别总盯着学校教的一分三亩地,学校更多是打基础,只学学校的其他的一律不管在面试时候很吃亏的,脑子里对学的知识有复盘、归类、掌握细节很重要。

3、普通大学生想进大厂请先找个大公司实习,哪怕是外包实习,大公司背书进去更容易,进普通公司更是分分钟的事。

4、从实习开始没事就去面试,没事就看看网上面试的例子。不然直接去大厂那么多轮面试,不挂甚至能说显得不正常。

5、要有项目,如果平时自己做不出来,实习时候也可以直接说明参与公司更大的项目。工作中有经验的人就是比没经验的好用。

6、多找关系多找关系多找关系多找关系(实习时期也是找关系的时期)

最后需要小编的Java基础-中级-高级面试集合以及学习资料分享的话记得一键三连(点赞+收藏+关注)后

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值