小码农也有大梦想!被阿里抛弃的我转头拿了字节的offer
Posted 不爱吃糖的小熊-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小码农也有大梦想!被阿里抛弃的我转头拿了字节的offer相关的知识,希望对你有一定的参考价值。
首先介绍下自己
小编18年毕业于一所不知名的二本大学,好在大学期间还算努力,毕业之后一直怀着一颗进大厂的心,但是又不想去北上广,想留在长沙离家近一点的,现在其实非常后悔。
当年长沙的大厂实在是太少了,所以我奉劝大三对自己的职业有追求想进大厂的同学,在大三的时候一定要好好准备,争取在校招拿到大厂的offer。
个人经历
最后我选择在长沙本地找了家科技公司做java开发,中间也跳过一次槽,也是做的Java。
但这几年时间里总感觉公司能给的成长太慢,虽然自己也在学习,还是免不了焦虑,特别是像自己这种学历和公司背景都一般的程序员,要保证自己以后不被淘汰,必须得做点什么。
所以在听到一个前同事被公司裁掉,最后进入大厂这个事情之后,彻底点燃了我心中想进大厂的那把火,我不甘心就这样下去,我也要进大厂!
由于知道自己的能力目前肯定进不去大厂,我不敢裸辞进行面试。
而是给自己制定了学习计划,不得不说,在职的情况下复习确实很难,因为可能加班打乱计划。于是我把所有能利用的个人时间全部利用了起来,比如早上十点上班,我六点钟就会起床,刷两个小时LeetCode,八点钟洗漱之后去上班。
晚上如果有时间就会把早上刷过的题拿出来继续复习,花了两个月的时间,一边复习(预习)数据结构,一边做题,LeetCode上面的高频题基本都过了一遍。花了那么多时间刷题,都是因为自己算法太菜,以前没有进行专门的练习。
题做得差不多之后,就开始复习专业知识了,具体内容我都会总结出来。前前后后准备了三个月,我才敢进行内推,经历了八次面试之后,面试时间又持续三个月,皇天不负有心人,终于在这个月等到了offer。
下面我会把这几个月面试的一些经历以及面试的真题分享给大家,时间有点久,可能记不太清了,但基本上包含了所有的问题。
阿里真题
一面
1.讲项目,串起来讲,可能遇到的问题,怎么解决,怎么实现,讲了发送客服消息
2.Spring里面的bean怎么回事
3.HashMap和ConcurrentHashMap,HashMap中的红黑树,两者rehash的区别
4.mysql的一致性是什么,数据库redolog,undo log,MySQL的索引结构,为什么二级索引叶子节点不能直接存储行数据的指针,这样可以不回表,怎么考虑的?
5.redis里面的zset,跳表怎么实现,怎么增删,
6.redis是怎么rehash的
7.算法,二叉树转双向链表
二面
1.自我介绍
2.再一次聊项目,功能,架构,角色,量级
3.Spring里面有哪些设计模式
4.SpringMVC和SpringBoot有什么区别
5.SpringBoot的自动配置是怎么实现的
6.刚刚你说了线程池,你线程池是用的什么,参数有哪些,为什么这么设置
7.线程池核心线程满了怎么办,里面的阻塞队列是干什么的
8.说说ThreadLocal是什么
9.CAP理论知道吗,为什么不能同时满足
10.Redis里面的数据结构有什么场景
11.Redis怎么实现锁(redis锁的所有坑都说了一遍)
12.分布式事务知道吗,有哪些方案(说了2PC,3PC,TCC,MQ)
13.算法题,树的直径
14.有什么要问我的
三面
1.介绍项目
2.场景题,设计一个朋友圈,读QPS 1000w,写QPS 10w
3.算法题LFU
4.你有什么问题
这个面试官是个leader,比较强势,很多细节回答的不是很好,所以脸色一直不好,给人压力较大,面完就觉得凉了。果然面完之后和前两次不一样,HR那里就没有任何通知了,到这里还是很失落,准备了那么久,因为最后一面没表现好导致挂掉。之后等了一个月,这一个月没有任何消息,一个月过后又接到字节HR的电话,说我之前两面面评都不错,让我试试他们部门,我就同意了。
字节真题
一面
1.介绍项目,细节
2.怎么做服务拆分,边界怎么划分的
3.分布式之后会遇到什么问题,CAP的各个情况介绍一下
4.dubbo调用过程是怎样的,PB知道吗
5.thrift了解过吗
6.zk介绍一下,有哪些节点类型,特点
7.怎么知道项目中接口的重要性,怎么做监控,你说的自动化测试是怎么做到的(这个问题回答完,他笑了。。。)
8.你所理解的SLA是什么,要达到什么等级
9.说说你理解的k8s
10.nginx的upstream是干什么的
11.nginx有哪些负载均衡策略
12.算法题:岛屿数量
13.你有什么问题要问我
二面
1.介绍项目,细节
2.锁有哪些实现方式
3.分布式锁的实现方式
4.JVM的内存模型,垃圾回收算法
5.MySQL的事务介绍,ACID的实现原理是什么(想问MySQL的日志)
6.HashMap的原理,其他线程安全的Map
7.Redis的高可用,有哪些持久化方式
8.Redis的数据结构,线程模型
9.用过什么消息队列,有什么特点
10.怎么保证消息幂等消费
11.docker的网络模式
12.算法题:比较版本号
13.提问
三面
1.介绍项目,细节
2.Linux的内存管理
3.浏览器打开一个网站的过程中会经历哪些网络处理,DNS的具体过程是啥
4.zk是什么分布式模型(想问的CAP定理),主从怎么做选举
5.zk只有一个主节点,写性能不高,zk怎么解决的
6.etcd或consul知道吗
7.多个服务中如何快速排查问题
8.Redis中的淘汰方式有哪些,Redis性能高的原因是啥
9.docker的实现原理
10.算法题:相交链表
四面
1.介绍项目,细节
2.项目量级多大,QPS最高的接口是怎么做的
3.rpc怎么实现服务发现
4.zk中的watch机制是怎么实现的
5.分布式锁有哪些实现,MySQL,zk,Redis都说了一遍,并且分析了各自的优缺点,这个问题问的频率太高了
6.怎么提高数据库读写性能
7.k8s了解吗
8.servicemesh有做过吗
五面(HR面)
最后一一面基本上就是纯聊天,问了下离职原因和职业规划以及期望工资就没怎么问了,不得不说字节的HR小姐姐是真的温柔哈哈。
经验分享
准备一份好的简历(敲门砖,不会包装简历的程序员只能去外包)
程序员的简历一定要多下一些功夫,尤其是对一些字眼要再三斟酌,如“精通、熟悉、了解”这三者的区别一定要区分清楚,否则就是在给自己挖坑了。当然不会包装,我可以将我的简历给你参考参考,如果还不够,那下面这些简历模板任你挑选:
2、了解面试公司,做好功课,知道问什么
对一线互联网大厂的面试点,我也做了以下总结:
- 阿里巴巴、百度、腾讯
- 字节跳动、美团、京东
3、梳理知识体系,学会举一反三
实际上,梳理知识体系是最简单的事,但很多开发小白总是一头雾水,实际上从第二点的大厂面试点就可以总结梳理出来我们应该要学什么,要掌握什么,通常我的方法是“大厂面试点”+“工作年限”来梳理自己接下来的学习及发展路线图。
之后,就需要根据路线图上的重点去进行有针对性的学习,在学习过程中,学会举一反三,学会写笔记,做总结。
这里我分享我个人的一些笔记内容吧:
注:本文限于篇幅,故而只展示部分的文档截图,完整的Java学习文档和简历模板我已经帮你们整理好了,需要的同学一键三连之后直接点击这里领取
Java从入门到架构成长笔记目录:
新手入门到开发半年(吃透12K+起步)
Java基础篇: 基础语法+集合+异常+反射+IO+TCP+多线程
Java web篇: MySQL数据库+JDBC+Servlet
三大框架篇: Spring+SpringMVC+MyBatis+商城实战项目
SpringBoot+SpringCloud分布式开发篇: 微服务入门+实战
项目经验篇: 秒杀系统设计+SpringBoot商城实战
Java基础篇
三大框架篇
项目经验篇(秒杀+SpringBoot实战)
开发1到3年
Java并发编程底层篇: 并发基础+JMM+线程池 +阻塞队列+并发集合+并发工具类+锁+atomic
JVM与性能调优篇: 内存区域+垃圾回收器和内存分配策略+类加载机制+调优
网络编程篇: TCP/HTTP+Netty+多路复用
SQL调优篇: SQL优化原则+锁+索引+调优+事务+执行计划
Tomcat底层篇: 架构+基础+调优+集群+安全
设计模式篇: 六大原则+23种设计模式
Spring源码篇: IOC+AOP+声明事务源码解读
MyBatis源码篇: MyBaits源码架构分析+MyBaits核心模块分析+二级缓存
并发编程篇
JVM及调优篇
网络编程篇
MySQL调优篇
设计模式篇
Spring源码篇
MyBatis源码篇
由于篇幅问题,以上《JAVA核心知识点总结》我已经全部为大家打包准备好了,需要的同学三连支持一下博主点击这里免费领取
结束语
面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。最后祝愿大家都能拿到心仪的offer。
以上是关于小码农也有大梦想!被阿里抛弃的我转头拿了字节的offer的主要内容,如果未能解决你的问题,请参考以下文章
测试小码农也有大目标,最新BAT大厂面试题大总结(持续更新中...)
月薪80k阿里架构师漫谈他是如何从一名小码农走到今天这一步。