咸鱼翻身,毕业2年从二线小厂成功上岸华为
简介
女孩子,985硕,非科班工科,毕业的时候因为脑残选择了二线城市的一家毫无名气的小厂做Java工程师,一年前想修正一下自己错误的道路,重回一线进大厂。人懒还菜,空有梦想不想努力,拖到今年7月,开始刷LeetCode,到11月初300多题刷了2遍。11初开始投简历,已经拿到目标公司的offer了~
6月份从某小厂离职,转投阿里云,很顺利地拿到了面试通知,但之后的进展却让我怀疑人生了,或者说让我懵逼的是,面试阿里云居然第一面就被吊打?让我开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢?
幸运的是,经过朋友推荐,去面试了华为,面试华为的过程较为顺利,很快就拿到了offer。这让我更弄不懂了,4面拿华为offer的水平,面试阿里居然一面就被吊打?
索性想分享一下这次的面试经历,让大家做个参考。
阿里一面凉经(一面竟然就问了2小时,什么情况?)
这次一面感觉是在打心理战,哥们自己的心里防线基本是被击溃,面到怀疑人生的程度,所以过程感觉不是太好,很多题哥们自己也感觉没答好,要么答得“缺胳膊少腿”,要么就是“画蛇添足”。
- 先是聊项目,从项目的架构设计到部署流程。
- Java容器有哪些?哪些是同步容器,哪些是并发容器?
- ArrayList和LinkedList的插入和访问的时间复杂度?
- Java反射原理, 注解原理?
- 新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?
- HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?
- HashMap push方法的执行过程?
- HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头?
- 1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类的?
- https和http区别,有没有用过其他安全传输手段?
- 线程池的工作原理,几个重要参数,然后给了具体几个参数分析线程池会怎么做,最后问阻塞队列的作用是什么?
- Linux怎么查看系统负载情况?
- 请详细描述springmvc处理请求全流程?
- 讲一讲AtomicInteger,为什么要用CAS而不是synchronized?
- 查询中哪些情况不会使用索引?
- 数据库索引,底层是怎样实现的,为什么要用B树索引?
- Mysql主从同步的实现原理?
- MySQL是怎么用B+树?
- 谈谈数据库乐观锁与悲观锁?
- 有使用过哪些NoSQL数据库?MongoDB和Redis适用哪些场景?
- 描述分布式事务之TCC服务设计?
- Redis和memcache有什么区别?Redis为什么比memcache有优势?
- 考虑redis的时候,有没有考虑容量?大概数据量会有多少?
- 谈谈分布式锁、以及分布式全局唯一ID的实现比较?
- 集群监控的时候,重点需要关注哪些技术指标?这些指标如何优化?
- 从千万的数据到亿级的数据,会面临哪些技术挑战?你的技术解决思路?
- 最近两年遇到的最大的挫折,从挫折中学到了什么?
- 最近有没有学习过新技术?
华为四面:3轮技术面+HR面(华为真经,值得参考)
华为面试过程很顺,一面问得比较基础,所以哥们整个人都还挺自信的一个状态,面试官也全程是一个比较“和蔼”的问题方式,所以比较轻松,因此面试得顺利,拿offer也快。以下是哥们华为4面的技术题,不包括HR面。
华为技术一面:
- 简单说一下面向对象的特征以及六大原则
- 谈谈final、finally、finalize的区别
- Java中==、equals与hashCode的区别和联系
- 谈谈Java容器ArrayList、LinkedList、HashMap、HashSet的理解,以及应用场景
- 谈谈线程的基本状态,其中的wait() sleep() yield()方法的区别。
- JVM性能调优的监控工具了解那些?
- 简单谈谈JVM内存模型,以及volatile关键字
- 垃圾收集器与内存分配策略
- 垃圾收集算法
- MySQL几种常用的存储引擎区别
- 数据库的隔离级别
- 5亿整数的大文件,怎么排?
华为技术二面:
- Java内存模型
- full gc怎么触发?
- gc算法
- JVM回收策略
- ClassLoader原理和应用
- 高吞吐量的话用哪种gc算法
- ConcurrentHashMap和HashMap
- volatile的底层如何实现,怎么就能保住可见性了?
- 有参与过开源的项目吗?
- 线程池原理,拒绝策略,核心线程数
- 1亿个手机号码,判断重复
- 线程之间的交互方式有哪些?有没有线程交互的封装类 (join)?
华为技术三面:
- 两次点击,怎么防止重复下订单?
- 数据库表设计,索引
- Redis的缓存淘汰策略、更新策略
- dubbo、netty、RPC介绍原理
- 限流算法
- zk挂了怎么办?
- 分布式锁的实现方式,zk实现和Redis实现的比较
- 秒杀场景设计,应付突然的爆发流量
- 分布式数据一致性
- 一致性哈希
- 消息队列原理介绍
- 注解的原理
- 数据库原理,数据库中间件,索引优化
- ioc原理、aop原理和应用
- 大数据相关,MapReduce
- Docker的原理
2021大厂面试题及答案
需要资料的可私信领取
实际上,我并不是一个幸运的人,而是一个努力的人,今天的这些,也全是靠努力得来的,尽管阿里云一面就凉,但能进入华为,也算是多年的累积,以下是分享的个人的一个学习方法和经验总结。
学习方法及经验总结
(1)多刷题
自己多刷一些面试题是非常重要的,即使是在自己不需要面试的情况下,也要经常了解现在的大厂小厂面试都会问一些什么?现在比较流行的技术是什么等等诸如此类。那么哥们是如何刷题的呢?
刷题主要分为Java技术以及算法两大类,搜集了目前比较新的一些题册,包括【Java核心知识】以及【算法刷题】,如算法方面就有LeetCode。
(2)多看看技术牛的实战书
实际上很多人目前的一个状态是缺乏实战经验,或者说是不知道该如何上手实战。那么,看一些技术比较过硬的大牛写的实战书籍对自己是很有好处的,多少能够学习到一些实战经验。目前我手上整理到的实战书籍也算是比较全面,包括Spring全家桶、JVM、并发编程技术、Redis相关、MySQL调优、Tomcat、ZooKeeper等高级技术。
(3)多交流,多思考
最后要强调的重点就是——多交流,多思考。现在很多程序员陷入一个怪圈,整天只会在办公室里机械的工作,实际上程序员要想有很大很明显的进步,交流是少不了的。那么怎么结识比自己厉害的技术牛呢?实际上渠道有很多,哥们个人的做法是:①看一些技术直播,在直播间交友;②加一些技术性的交流群,多交流问题;③参加一些线下活动,如面基、研讨会等等。
所谓辛酸史
我19年毕业,在学校的时候就是傻憨憨,不觉得小厂大厂有什么区别,毕业时小厂给我的薪资比大厂普遍的白菜价少了2k,大厂在一线小厂在二线,也不觉得自己和那些去了大厂的朋友们有什么区别,emmm,毕业一年后,我发现薪资可能拉开了6k、8k,并在交谈中发现不同平台给人的视野确实是不一样的,无意评价小厂前领导好坏,但是我在两年的工作中听见领导说的最多的话就是:隔壁部门多垃圾,xxx多垃圾,xxx前同事垃圾去了阿里都能当领导,离职的xxx同事多垃圾,我们目前的技术多棒~听多了真的觉得自己挺无敌的,好在最近一年结婚的同学比较多,在参加婚礼和婚礼的路上,我遇见了各个大厂工作的朋友们,傻眼了,没错,我是井底之蛙~~~~~
想要修正回正确的道路,确实不容易,1月到6月,每个月的某几天都陆陆续续刷几道题,6个月的时间貌似刷了30题左右,刷题和上刑场没什么两样,心理准备2小时,一道哈希表都能做一天。一度深刻怀疑自己的智商,感觉工作经验对刷题毫无帮助。
6月的某一天,之前离职去海康的同事拍了海康门口的一张广告牌给我,我记得上面写着:你的梦想实现了吗。如果没记错的话,前同事问我,你还在垃圾堆吗hhhh,这位同事是被领导pua+cue离职的,我们俩算组里被pua的难兄难弟,一起努力过项目写的代码会被领导否定重构再退回我们写的初版,领导会在组里的微信群里暗戳戳人身攻击我俩偷懒巴拉巴拉。(ps:这件事是这位难兄离职的***,这位难兄也是位毕业没择好业的学霸,至少在我们眼里,你可以针对项目说我的不好,但是懒惰这种话就忍不了,懒惰==人身攻击)。这是个小插曲,我决定一定要刷题跳槽了。
7月初,刷题太难了,我决定拉上小伙伴,也就是那位难兄,因为之前一起被cue的原因,我知道他也有大厂梦,只不过也是不想刷题,于是我发微信说,走啊,刷题去大厂啊,他拒绝了,说刷题太难。劝了好几天,说有梦想要努力啊,要回大厂啊,本来就是我们应该去的地方,难兄也无动于衷。最后我说,就100题,做热题100,没刷太多都没有发言权,就像我们没去过大厂不知道大厂是不是真的如传言一般,不刷100题怎么知道好坏呢,于是乎,我有了刷题的小伙伴,从7月初到10月末的4个月,难兄刷题刷上了瘾,成功跳去了百度~笑cry。感谢小伙伴!!!
至于7月到10月,这4个月,我是怎样刷了2轮300题,这就是一个很辛酸的故事了,上班背着领导刷,下班刷到12点、1点、2点也有过,因为生活上的种种变故也停滞过几天,然后嚎啕大哭,但是恢复过来也总算坚持下来了~好像回忆起来总是崩溃的时候多,刷回溯太难停两天,动态规划太难也停两天,走走停停,感觉上就是坎坷二字可以形容。但是回头去想,刷就完了,总有刷开窍的那一天,量变到质变总没错。
有点小感慨
一开始投大厂还是没什么信心的,简历被阿里、网易刷、被滴滴刷,后面发现只是各个公司各有偏好而已。一直想着进了大厂要感慨一下这一路多难,想着说进去不算,要过了试用期才算,但是我觉得拿到offer的那一刻,我的小厂跳大厂的目标就算正式宣告结束了。偶尔也会矫情一下记录一下,但是真的要发的时候,觉得那些文字都不足以描述我内心的想法,过去一年多的很多片段都从我的脑海里闪过,我累过、难过、也想放弃过,不下一千次。
看鸡汤、看当幸福来敲门,朋友圈里仅自己可见的励志语录:一以惯之的努力,不得懈怠的人生,每天的微小积累会决定最终的结果,这就是答案。还有什么:等苦尽甘来的那一天,山河星月都做贺礼。鼓励自己别人能做到的事情我也可以,只不过我选择错了方向,一定可以修正回去。
参加朋友婚礼的时候,我在青岛的海边虔诚的祈祷,祈求上天眷顾我,海风保佑我能拿到一个大厂的offer,无比真诚。终于,我在某天深夜订下的目标,终于有了重见天日的时候。面到leetcode原题的时候,我也比之前的20几年更加清楚的明白了什么叫做越努力越幸运。大概小厂跳大厂这段经历,在小厂这错误的两年,就是让我明白,人更多的要依靠自己吧。
这段经历分享出来给大家做参考,能毕业就进大厂就毕业进,毕业的时候想清楚选择,好好择业,不要因为爱情脑残,也不要因为没信心不去尝试,秋招不行开始刷leetcode准备4个月春招也可,只要有想法,我相信没有不能通过努力实现的事情,加油鸭~~~
还有要相信贪心思想,无数的局部最优,一定可以凑出一个全局最优解哦~
分享不易,感谢大家的阅读!