笔试
4月6号做了笔试题,做的一般般,30道选择题涉及面挺广,基本计算机基础都覆盖了,2道编程A出来1道,第一个是警察抓小偷问题,主要是字符串和数组操作;第二个是石子分堆问题(石子数量是n,如何分堆,保证相邻堆的石子个数不同,而且堆数目最大),用贪心算法,当时没想到12121的分堆方式是最优的子结构。
一面问题
然后12号收到面试短信,15号赶到北京参加一面。问题如下:
- 自我介绍。
- 画出项目的架构图,对每层进行解释,为何用MVC分层。
- 用的struts1还是2,struts中的action是单例的吗。
- exception异常处理结构,常见异常,多catch处理顺序。
- 对多个表的操作,用事务操作如何实现,写代码
- maven了解吗
- tomcat如何部署,war包结构,发布工具.
- 最近一个月在看什么技术,jvm相关原理,垃圾回收算法。
- 写sql语句,主要考察group by/having/count等
- 消息队列了解吗。
二面
17号早上收到二面通知,急急忙忙赶过去,二面问题如下:
- 贝叶斯算法。
- java数据结构。hashmap结构,arraylist和linkedlist区别。
- 线程同步如何实现,reentrantlock跟synchronized区别。
- 线程池,原理和实现。
- 负载均衡算法。
- 数据库,查询优化,事务隔离级别,你项目中用的什么隔离级别,用读提交可以吗。
- 消息队列,对dubbo原理了解吗。
- hadoop和spark掌握到什么程度?
- 你还擅长什么技术,都介绍一下。
面试结果:
面完当时感觉还不错,但是回来后收到了复试未通过的通知。因此,城市套路深啊,永远不能轻易下结论,不能自我感觉良好。