初中级工程师(1-3年)项目经验不是很丰富,主要是看基础是否扎实,用过的东西是否去深究过,是否有意愿去提高自己。
面试流程大概如下:
- 先做简单的自我介绍,自己做过的项目,然后会去问一些项目中的细节,确定是否真正用心做过,也会探究一下技术实现,然后会让他们去思考下是否有些自己觉得可以提高的地方,看看回答的程度;
- 然后会问些基础知识
- java基础(递进式的询问,难度依次递增,如果哪一步短路了,给一次机会,否则短路)
- 基础用法:==和equals区别、异常体系(常用RuntimeException有哪些)、string和stringbuilder区别、泛型讲解;
- 集合(List、Set、ArrayList、HashSet、TreeSet、HashMap、TreeMap)、正则表达式;
- 多线程:static-synchronized和object-synchronized区别、如何创建异步线程、如何等待一个线程结束、线程有哪些状态、线程安全、常用并发组件、sleep和wait的区别、volatile用法、lock接口、锁能够保证哪些特性、sleep和wait区别;
- servlet规范:
- servlet和filter区别,servlet生命周期;
- filter一般用在什么场景,在servlet容器中filter一般是以什么样的形式在执行;
- jsp九大内置对象;
- forward和sendRedirect区别;
- request和session,attribute、session生命周期;一个请求,如何在多个filter之间传递数据;
- http协议:
- GET|POST区别;
- 如何避免缓存;
- 常用错误代码(302、500、406);
- 与缓存相关的http-header有哪些;
- 一个http请求的执行流程、从客户端到服务器会经过什么过程;
- http1.0与http1.1的区别;
- cookie与session区别;
- URL与URI区别;
- mysql(事务特性、隔离级别、索引、外链接)、数据库连接池作用;
- spring(常用注解以及相应含义、spring-mvc、spring-aop切面如何使用、spring事务传播机制)、qualifier注解、prototype与singleton区别、bean生命周期、spring-bean是线程安全的吗;
- 操作系统:进程线程区别、线程有哪些状态;
- java基础(递进式的询问,难度依次递增,如果哪一步短路了,给一次机会,否则短路)
- 算法题(栈、字符串查找、快速排序、二分排序、二分查找、二叉树查找)、数据库sql题(重点是group by);
- 应用服务器部署(tomcat日志类型、如何启停、如何部署、如何调试);
- linux命令(查日志、判断程序是否启动);
- 场景设计:统计PV、过滤器之间传递数据、三个线程同时启动如何顺序执行、
如何判断是否可以通过面试呢?
- 项目是否用心做过,对一些问题是否有思路,打分标准:
- 1分:简单的做过,很多东西回答不上来;
- 2分:做过,能够答出所以然,但是对项目整体缺乏认识,只是集中在自己做过的部分;
- 3分:对项目的把握性好,有全局认识,能够从整体层面进行分解,知道优化的空间;
- 基础题目回答成功程度:
- 1分:只能回答对很小一部分;
- 2分:能够回答出大部分;
- 3分:全部答出;
- 4分:答出来,且有一些更多的认识,比如源码阅读等;
- 应用服务器部署、linux命令:
- 1分:答出1-2个;
- 2分:答出大部分;
- 3分:答出全部;
- 如果前面答得不怎么样,直接短路pass掉;(5分是及格线)
- 算法题:
- 0分:思路有问题,直接pass;
- 1分:思路没问题,有细节出错,在指导情况下可以规避;
- 2分:思路没问题,且bug-free;