”春风十里面到跪“,细数一下吾当初从一枚懵懂羞涩的少年到现在侃侃而谈即将奔三的青年,为了面试,面过的试,都经历了什么!
我是一名java程序员,主要从事java后端开发,从我当初第一次面试开始就是一跪一膝印,一直到现在。
鄙人是一名非科班,非全本程序开发从业者,一路走来也算是磕磕绊绊吧,换过三份工作。面试也面的挺多,有外包,有创业型,有大厂等,“哦!”,唯独没面过独角兽。
说一下曾经深有体会的一些java面试过程中的坑吧,鄙人总结出以下几点:
简历一定要撸好了,不要写过头,也不要太谦虚。但是你写了什么,自己一定要明白啊,面试官就是照着你的简历来的,可以用一些在线简历模版,但是内容一定要有自己的特点,那么多简历,你没有亮点怎么行,在这一点上可以看看某某招聘上各家公司都有啥技术要求,记住,这就是主流,要把握住喽。如果用过的技术多,不要长篇大论,一个我会js,我会jquery,我会cs,千万别这样,如果你是一年以内的工作经验,期望薪资够自己生活,那就当我没说。要学会概括,一句概括,比如熟悉前端相关技术,如vue.js,h5等主流等,比如,你从业5年了,做开发期间,还做过2年管理,那可以概括在写完技术介绍的时候,加上一句,2年管理经验。
一个概念:技术栈多,就要简洁,要概括,让人在很短的时间看明白,通透。技术栈少,就要写多点,但也别滥写,可以写一些自己的成就,比如解决了某某问题。
对于写在简历中的项目,在脑海中最好有自己理解或者刻画的业务模型,有些大厂面试官比较看重这个(比如某河鲜)。
基础的一些东西,自己忘了的,要没事多看看,jdk各个版本的一些特性最好都了解一下,不必会,但最起码听说过吧,知道大概什么个东西吧!一些小厂的面试,可能深度不会太深,但是这就意味着什么?他会问你更多的其他问题,是好事也不是好事,一些大厂的话,比如alibaba系列基本就是打破砂锅问到底,直到你给出面试官心目中的那个答案,这就要三分看运气,七分看实力了。
咳咳,主要是你可能走入了一个误区,比如,就拿hashMap来说吧,你可能一顿说什么数组加链表结构,1.8加进了红黑树,链表阈值达到8就升级为红黑树等,听我说,千万别随便去搜一篇文章去看看,就觉得就是这样了,一定要去看有质量的文章,去挖掘那些深度的东西。例如,它为什么要改成这样呢,以前的hashMap结构存在什么问题呢,它的源码大概是怎样的呢?对于这些,我们不要吝啬对它投入时间,因为这已经成为一种常态了,就我来说,我感觉这玩意已经问了快三年了,每面必问,也不知道要问到啥时候!!!
如果你的年限足够,并且前面回答的可以的话,那另一个必问就是jvm相关了,回答这些一定要条理清晰,想要条理清晰,就要好好的学一遍了,哈哈,没办法,这玩意你搞通透了,好处多多(一定要找靠谱的文章或者作者去了解学习,或者读官网手册,规范也行,嘿嘿)。
面试前可以突击,但是在自己看过某某招聘网站的要求后,梳理出自己的技术栈后,还不去好好精研一番那是不行的。比如常见的linux命令操作,sql语法,mysql,tomcat,zookeeper,redis,nginx,mq,netty 等等,这都是基本,像是分布式,或者说微服务框架,这些也都是基本要了解掌握的,比如springcloud或者alibaba springcloud(其实就是dubbo的进化版)。再比如,多线程,AQS的一些同步工具(JUC包下的东西),分布式锁,分布式事务等,这些等都已经是市场刚需了!咳咳。。像这些等,不去专门去学习下,凭几篇文章就想掌握,是不存在的(不经问)。
在自己的技术栈,一定要研究透自己擅长的百分之40的东西,熟悉百分之60的东西,如果在面试过程中(当然,如果能百分百那最好了),就可以与面试官纵横厮杀了。因为,现在普遍的面试,就拿今年2020年来说吧,一般都会让你说说自己工作中遇到的一些问题(或者说比较有技术难度的问题),那这一块就要你结合实际和自己研究通透的那一部分来进行表演了!如果这一部分能引起面试官的兴趣,他对你提问,那你又能回答的如醉如痴,那基本就妥了。需要声明的一点是,面试是两个人的沟通交流和认识,一定不要自己顾自己的在那里说,多和面试官互动,才能有感觉,面试官对你有感觉,那你的机会就来了。逻辑一定要清晰有层次,这需要自己注意,去琢磨了。
面试过程中,千万别觉得自己回答的很牛逼,这下肯定能过,临完了,还要问问,我这面的没毛病吧!(说实话,我在面一个同学的时候就碰到过这种情况)兄弟,请注意,如果你有这种感觉了,那一定要立刻掐断,请记住面试还没有结束,这是你的错觉。最后,在技术面上没有问题了,最后一个人事面上,千万也别太膨胀啊,包括前面我们自信是好,但是一定要谦虚有礼啊,这是我们的优秀传统文化,像alibaba那种大厂,由于他们的企业文化,人事可是有权一票否决的哦,可要注意别阴沟里翻船。
最好有自己的博客,有自己的总结,有自己的技术栈,有自己的或自己参加的开源项目,如果有一定影响力的话,这个可是很加分的。 还有,对于像我这样非科班,非全本的,如果有时间最好提升提升自己吧,考考试,虽然纯靠技术,但是有些门槛还是需要你去跨过去的,除非你的技术已经牛逼到一种程度了,这种人基本千不存一。而且,到最后,像我们java开发其实有很多思想都是借鉴了计算机系统结构和计算机网络中的思想,而且有些高效的程序也与底层息息相关,像是io的处理等等。如果你不系统的学习,有些东西除非你逆天了,不然还是不行(我说的是如果你有年薪百万或者百分之六、七十百万梦想的话)。
其实,像很多科班生,也有不如半路出家的,这不是贬低或者是什么,(咳咳)而是(你这个科班生上学没好好学习的)事实!因为这玩意真的要你自己有兴趣,爱它才行(当然,智商高的除外,对于一些数学家,有时候研究一些东西,随手开发些东西也是soeasy的,而且写出来的东西大部分人可能都看不懂),我们一定要在工作的同时,不忘提升自己,一些基础性的东西,要永不放弃,哦,不,是经常温习,一些基础该补还是要补的。现在外面有些培训机构牛逼吹的也很多,不过,他们确实能将你领进门,但是后面的修行确实要靠自己了。我本人虽然半路出家,现在也是普通人一枚,不是什么大神,但是也在一直提升自己中。不过,值得一提的是虽然半路出身,但是 俺也是从初中就开始学习汇编,高中学习c的一枚义务教育中,学生编程爱好者,喜欢OD的一枚渣渣,虽然没什么成就,但是当时就开始培养的那种思想和其他莫可名状的东西是不可磨灭的。
再重申一遍:对于即将到来的一轮轮,一个个面试,我们最好好好准备几个月,在这之前要不忘时刻充实自己,要把这个当成一种兴趣,不要当成一种工作的负担,如果是负担就要考虑转换思想或者走管理路线了,工作久了,一定要有自己的职业规划和生存规划,以及那遥不可及的梦想和炙手可热的爱好!加油,你们,我们!