JAVA面试全流程--技术小白vs业内大厂
Posted 慕课训练营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA面试全流程--技术小白vs业内大厂相关的知识,希望对你有一定的参考价值。
最近突然回想起几年前的一次上海业内电商大厂的java面试经历,虽然过了那么多年,从一位电商小白发展到自己也面试了无数java求职者,基本套路和方向在行业内依然没有发生根本性的改变。
下面就通过我的一次面试经历的分享深度剖析给大家一名java技术人员的面试本质。
1
技术面试轮次论
首先其实各个公司的面试流程几乎是大同小异,分为多轮面试;许多初入职场的同学可能觉得多论面试无非就是多个人一起把把关,或者公司的hr要求面试流程使然,其实这些理解都太片面了。
为什么需要技术面试多轮次,更深一层次的原因在与不同的面试轮次其实考察求职者的侧重点根本不同。
如果无法理解其中侧重点三字的本质,则会对自己陈述的内容完全打不中面试官心里,可能许多面试官觉得差不多就这么过了,但掌握真正的精髓可以让你一击即中。
2
基础能力面试
一般公司的技术面试如果不考虑HR面试的话,就只分为三轮;第一轮是最“基础”的技术面试,之所以叫基础绝对不是面的技术很基础的意思,而是一般会找一个团队中相对高级或资深的程序员来面你一下。
这个人有可能是个小team leader,也有可能是个普通的能力强一点的开发而已。当时我去某一电商大厂内面试,一面是一个看似就有点干货的眼镜男程序员。首先最最通用的java基础:
1、HashMap的实现结构原理,java8对HashMap的结构做了哪些优化?
——考察数据结构知识以及你是否用过java8
3、java线程池中
coreSize,maxSize,queueLength,keepAliveTime,rejectStrategy
那么多参数之间的联系和相互作用的影响是什么?
——考察多线程知识
3、java并发处理的方式有哪些?
——考察并发处理知识?
4、jvm分为哪几个区,他们之间的关系如何,gc时会做哪些事情
——考察jvm和gc知识?
其实这些题若平时工作或学习中从来没有在意,仅仅只是用用框架或者改改别人写的代码,做做小demo的程序员,面试前一定要复习准备多遍,而且必须深入理解掌握,大厂对人的基本素质看的是很重的,若你连基础原理都讲不清楚立马会给你打上一个loser或者浮躁者的标签,然后深入到java web的知识:
1、http协议get和post的区别
——考察http基本协议
2、servlet的原理是什么?讲一下它的一个完整的生命周期?
——考察servlet知识
3、多个http的请求若要访问同一个变量的时候一般怎么处理,是用threadLocal还是直接用单例访问,各有什么优缺点?
——考察你对web项目多线程处理中单例及threadLocal的理解
1、spring的DI,AOP,IOC的原理和应用分别是什么?
——大家看清楚,首先要谈好原理(动态代理,cglib代理,扩展等),然后再谈应用,不要上来就举例说你在项目上的应用
2、spring bean有哪几种作用域,bean的生命周期是怎么样的?
——bean的理解一定要到位,不然答不好
3、springboot有接触吗,谈谈你对它的理解,它为什么好?
——这题是你的加分项,可以谈谈以前没有springboot时配置一个东西有多么坑,有了springboot后多么简单,然后一定要从原理上说为什么springboot简单了,这样又可以体现你研究过springboot的原理,又能用它去解决问题
4、mybatis的orm相关知识?
——着手从orm的原理到mybatis的应用开始谈,然后讲讲mybatis的sql自动生成以及分页插件等,体现你在项目中的实战一点都不少
以上一些问题若你都可以从容回答,且答案正确的话,非常恭喜你,你在这位基础能力的面试官眼中基础能力很好,可栽培,然后他会用心的去考察你的下一步相关域的能力,于是这位面试官就开始考察我的数据库技能了:
1、有没有用过什么rpc框架,rpc的基本原理是怎么样的,如何实现一个自己的rpc框架
聊聊dubbo,聊聊springcloud,看你用过哪个,可以先简单的讲一讲具体的应用和解决的问题,再深入原理讲其实现方式,若你了解实现方式那么怎么实现一个rpc框架就不算是问题了
2、分布式环境下如何解决事务的问题
最最show你能力的时候到了,什么都别说,先聊cap和base理论,讲明分布式环境下要么确保一致性牺牲可用性,典型(二阶段提交性事务),要么确保可用性牺牲一致性但要确保最终一致性,例如(最大努力提交性事务,可用消息中间件确保消息最终成功消费实现。tcc型事务,可用事后回滚型方式解决。补偿性事务,可以谈谈异常定时处理机制等)
3
项目能力面试
于是这位资深程序员同学带着我的简历离开了会议室,让我坐在那里等,我好好梳理了一下思路,因为奇怪的是他没有问我项目经历,可能刚才聊着聊着技术聊的太high太深入了,我要准备好立马被问项目的准备。
果然二面一般都是某个大组的team leader,他会根据前一个面试官给他的技术反馈决定是否要继续深入的问你一些问题,当然不排除那些不交接的公司把之前的技术问题重复的问。
这个时候你一定要耐心再耐心的去回复问题,千万别觉得之前你说过了,这次我就说的快一点,一旦二面继续问你深入的技术,就代表他也是个典型的技术男,很负责任,你要配合他。
终于谈到了项目经历,一般问题会讲一讲你在自我介绍或者简历中写的一个项目,我记得当时被问到的是我简历中写的一个日租办公室的类交易网站,可能跟他们的电商业务有些许联系。
这个时候你一定要梳理一下思路,一旦聊到项目对于面试官而言肯定是不清楚你整体的业务逻辑的,你不能上来就说一个点,而是要在全盘的角度出发去介绍你的项目,最好是在面试教室的白板上画一下你的介绍框架及步骤。
4
终面
*
强推!1元Java基础巩固课程
以上是关于JAVA面试全流程--技术小白vs业内大厂的主要内容,如果未能解决你的问题,请参考以下文章