说说两个月的秋招之路和经常碰到的面试题,顺便offer求建议
3月开始找实习,运气比较好,去了头条实习,但是干的活不是很喜欢,是内部系统,做后台的话成长不是很多,但是公司吃的确实很好,也比较累。
到了7,8月,自己有点膨胀,觉得这段实习经历还是有点东西的,就投了一些大厂,想要拿点满意的Offer。
8月提前批投的比较少,面试了阿里,百度,网易,快手,猿辅导,蘑菇街,感觉自己面试状态很好,但是全部都是一面挂,持续到了9月,心态爆炸了。
心想着头条能留也不错,做做内部系统也挺好的,结果转正答辩似乎表现的也不太理想,至今在等结果,于是心态爆炸,一晚上没睡,连夜买高铁赶了一波西安华为的优招。
回学校的时候舍友都已经收割了不少Offer了,基本都是各种大厂,本人更是慌如狗,于是开始不管什么厂,疯狂海投。
好在心态爆炸的同时没有失去理智,个人在开发这方面做得比较多,知识也有系统的理解,项目经历不太水,所以基本得到了很多面试机会。
正式秋招第一次面试的是华为,这个比较水,一面聊了项目和开发中用的技术,二面聊了人生,也很快收到了offer。
然后是西安的外企ibm,效率很高,投了过几天就约了面试,一面主要就是聊了项目,git,敏捷开发,和一些基础,二面聊了些项目和区块链之类的东西,也收到了offer。
紧接着Keep来宣讲,蹭了一波面试,状态不错,问了几道看过的代码题,当时二面问的一道设计题印象很深:短url映射长url,系统qps5000,要求设计一套完整的高可用分布式系统,设计数据库结构,负载均衡等,且要求可以1s内查询到出现次数前100的Url。当时这个答得不错,因为实习看的比较多,所以面试官给我通过了,当场给了Offer,非常感谢keep给了我在北京打拼的机会。
然后自己冷静下来做了一些总结,也没有放弃海投,依次面试了贝壳,京东,再战网易,都走到了最后,正在等消息。
后来在Boss直聘上和一个美团的Hr聊得来,他给了我美团新到店的面试机会,先是电话面试考了一遍基础,二面在西安现场面试,问的比较偏实践,比如系统刚开始的时候你打算怎么设计,用几台机器来快速上线。比如对redis和Kafka的全面理解,和新系统设计中怎么使用,分析各种场景中可以用的设计。不知道是不是部门问题,只面了两次技术面,就到了hr面,最后过了几天后收到了意向书。
然后陆陆续续收到了宜信,顺丰,还有几个创业公司的offer,心里也是安心一点了。
目前在全力帮女票复习,争取一个北京的机会。
所以秋招是很漫长的长跑,目前面试了二三十家公司了,经验也是一点一点积累起来了,对自己不太清楚的一般可以避开,可以在自我介绍的时候就突出自己的优点,希望大家不要过多的把时间花在焦虑上,应该多系统的总结一下自己的不足,稳住心态,做开发,会就是会,不会就学,没有别的思路。
顺便说一说自己总结的一些经常被问到知识点:
Java基础:
hashmap:构成原理,扩容过程,put过程,为什么长度总是2的N次方,是否线程安全;
list,set,queue;
一些关键词的作用:final,static等等;
多线程:sychronized,Lock,volatile,CAS。每一个的实现原理和常用场景,可重入锁和公平锁的原理,jdk的锁优化;
线程池:常用的参数,工作过程;
Spring:ioc和aop的实现原理,jdk动态***和cglib的区别;
单例模式,工厂模式,***模式等等手写;
Object类中的常用方法:equla,hashcode,wait,notify等等,经常被问,尤其是hashcode的重写,hashcode在容器中的运用;
装箱和拆箱;
异常和error;
jvm:类加载机制,垃圾回收策略,垃圾回收算法的好处,常见的调优方式。
数据库:
基本的写sql能力:灵活使用join,groupby,order by以及常见的聚合函数;
索引的原理:b+树的好处,b+树和b树的区别;
联合索引的设计:比如(A,B,C)索引,在where a=1,b>1,c=1中哪些列可以用到索引?where b=1,c=1可不可以用到索引,为什么(联合索引的结构)?where a=1,c=1时可不可以用到索引?where a=1,b=1 order by c可不可以用到?
索引设计:根据一些常用的查询条件设计索引;
范式;
MVCC;
事务,相应的隔离级别,默认的隔离级别;
redis:
redis的模型,redis为什么快?redis为什么是单线程的?多核心机器如何部署redis(单进程占用单核)?
epoll,poll和select;
redis,mysql***作的时间数量级;
redis各种集群的方式,哨兵模式;
redis持久化的方式,aof文件太大了怎么办,主从同步的方式;
redis的五种常用数据结构,以及对应的底层数据结构的实现(zpilist,skiplist,quicklist,sds等等要有些了解);
消息队列:
常用的消息队列设计和适用的各种场景;
kafka的原理,kafka作为消息队列和redis的区别;
一个topic中的partition是不是一定散布在同一个broker中?
如果要保证消息全局有序,怎么做?
leader***是怎么选的?
kafka中consumer怎么保持状态的?
kafka是哪个公司出的?(还真老有人问)
网络:
tcp的各种东西,udp和tcp的区别和常用场景;
http的各种状态码,以及相应的排查错误的方式;
http请求头等;
老生常谈的输入url按下回车的全过程;
***作系统:
经常问的就是linux指令,死锁的各种问题,虚拟内存什么的,这块掌握的不是很好。
求offer支招:
本人现在住在西安,西安有2个选择:
ibm 的cdl认知资产开发部门,做云计算软件,优点是在家门口,工作轻松不加班,薪资估计不是很高。
华为云,也是家门口,不过薪资没谈。
北京:
拿到的是美团新到店和keep,但是美团听说白菜比较低,这个部门也不是很了解,keep有可能有期权。
其他正在等消息的有贝壳,知乎,京东这些,京东是京东云基础平台开发,知乎是知乎主站,个人很喜欢知乎。
杭州:
网易正在等消息,如果过了的话应该也是不错的选择
#网易##京东##字节跳动##美团##Java工程师##面经##秋招#