面试高级Java的一些思考

 

面试高级Java的一些思考

文章插图
 
 
最近 , 我密集面试了若干位JAVA后端的候选人 , 工作经验在3到5年间 。我的标准其实不复杂:第一能干活 , 第二Java基础要好 , 第三最好熟悉些分布式框架 。我相信其它公司招初级开发时 , 应该也照着这个标准来面的 。
我也知道 , 不少候选人能力其实不差 , 但面试时没准备或不会说 , 这样的人可能在进团队干活后确实能达到期望 , 但可能就无法通过面试 , 但面试官总是只根据面试情况来判断 。
但现实情况是 , 大多数人可能面试前没准备 , 或准备方法不得当 。要知道 , 我们平时干活更偏重于业务 , 不可能大量接触到算法 , 数据结构 , 底层代码这类面试必问的问题点 , 换句话说 , 面试准备点和平时工作要点匹配度很小 。
作为面试官 , 我只能根据候选人的回答来决定面试结果 。不过 , 与人方便自己方便 , 所以我在本文里 , 将通过一些常用的问题来介绍面试的准备技巧 。大家在看后一定会感叹:**只要方法得当 , 准备面试第一不难 , 第二用的时间也不会太多 。
别让人感觉你只会山寨别人的代码
框架是重点 , 但别让人感觉你只会山寨别人的代码!在面试前 , 我会阅读简历以查看候选人在框架方面的项目经验 , 在候选人的项目介绍的环节 , 我也会着重关注候选人最近的框架经验 , 目前比较热门的是SSM 。
不过 , 一般工作在5年内的候选人 , 大多仅仅是能“山寨”别人的代码 , 也就是说能在现有框架的基础上 , 照着别人写的流程 , 扩展出新的功能模块 。比如要写个股票挂单的功能模块 , 是会模仿现有的下单流程 , 然后从前端到后端再到数据库 , 依样画葫芦写一遍 , 最多把功能相关的代码点改掉 。
其实我们每个人都这样过来的 , 但在面试时 , 如果你仅仅表现出这样的能力 , 就和大多数人的水平差不多了 , 在这点就没法体现出你的优势了 。
我们知道 , 如果单纯使用SSM框架 , 大多数项目都会有痛点 。比如数据库性能差 , 或者业务模块比较复杂 , 并发量比较高 , 用Spring MVC里的Controller无法满足跳转的需求 。所以我一般还会主动问:你除了依照现有框架写业务代码时 , 还做了哪些改动?
我听到的回答有:增加了redis缓存 , 以避免频繁调用一些不变的数据 。或者 , 在MyBitas的xml里 , select语句where条件有isnull , 即这个值有就增加一个where条件 , 对此 , 会对任何一个where增加一个不带isnull的查询条件 , 以免该语句当传入参数都是null时 , 做全表扫描 。或者 , 干脆说 , 后端异步返回的数据量很大 , 时间很长 , 我在项目里就调大了异步返回的最大时间 , 或者对返回信息做了压缩处理 , 以增加网络传输性能 。
对于这个问题 , 我不在乎听到什么回答 , 我只关心回答符不符逻辑 。一般只要答对 , 我就会给出“在框架层面有自己的体会 , 有一定的了解” , 否则 , 我就只会给出“只能在项目经理带领下编写框架代码 , 对框架本身了解不多” 。
其实 , 在准备面试时 , 归纳框架里的要点并不难 , 我就不信所有人在做项目时一点积累也没 , 只要你说出来 , 可以说 , 这方面你就碾压了将近7成的竞争者 。
单机版够用?适当了解些分布式
【面试高级Java的一些思考】别单纯看单机版的框架 , 适当了解些分布式!此外 , 在描述项目里框架技术时 , 最好你再带些分布式的技术 。下面我列些大家可以准备的分布式技术 。
1、反向代理方面 , Nginx的基本配置 , 比如如何通过lua语言设置规则 , 如何设置session粘滞 。如果可以 , 再看些nginx的底层 , 比如协议 , 集群设置 , 失效转移等 。


推荐阅读