面试自我反省总结

1. 第一个面试大概是年前还差半个月放假的某天晚上,一个电话面试,杭州的一个偏传统公司,应该是主要做 ERP 这类的系统,最后 HR 等年后通知就没通知了。

主要问了 java 集合,包括里面 List、Set、Map 各个区别以及相关算法、Spring 的设计模式、Spring MVC 和 Servlet 的联系区别、Spring 的相关源码,我当时只说了 Spring MVC 启动、运行源码流程,@Autowire 注入的时候的 AutowireAnnotationBeanPostProcessor 的相关逻辑,顺带讲了 Bean 的生命周期,循环注入等,还有一些常见的面试题给忘了。

2. 第二个面试是4.26号武汉小米的面试,以为一面不会过,没想到过了,可惜二面BOS没过,主要是对自己的项目没答好,可能由于没怎么复习以前的项目,不过学了很多。

一面先问 hashmap 的 put,currenthashmap 的 put,以及 size,然后是 ThreadLocal,订阅模式、命令模式、代理模式,sql,组合索引,手写一些 sql 问是否用到了索引,
手写一个 幻读,隔离级别与事务传播,那个幻读没写出来,然后被一面的面试官评价为基础可以但是 sql 不行,唉,然后问我最得意的项目,我说的是一个基于 ZooKeeper 的一个项目,然后问了 zk 的一些知识,两阶段提交、paxos(这个没答出来)、CAP、BASE,然后问如何实现一个分布式锁,然后问了项目的一些问题,涉及到了线程池。
二面直接让我把一个 BI 的项目技术架构图画出来,然后问 ETL ,RPC 和 http 的区别,然后其它一些小问题,跟我说要多敲代码,不是本专业只能要非常突出的代码能力才行。。。然后谈论了业务和技术,最后直接跟我说没过。比较奇怪没有问 JVM,可能是三面才会问这么高深的吧。。。
事后也把我做的项目都复习总结拿出来重新过了一遍,学了很多,然后好好复习,准备下一个面试。

3. 第三个面试是上海的一家创业公司,笔试,两轮技术,HR,拿到 offer 没去。

笔试:两个类A extend B,考察静态方法和构造方法的执行顺序,二分查找法,mysql 的 having order 等。
技术面试,一问 hashmap 然后问简历项目。最后问多个线程同时下载报表如何下载。主问简历。
二轮BOS,一问 某个业务从请求到最后日志记录的业务全过程。然后聊了很多,treemap 和 hashmap,git rebase merge,最后一个问题是一千个排好序的文件,如果成为一个大的排序好的文件。大概这么多

4. 第四个面试是上海同事推荐,两面技术,拿到 offer。

一面电话:集合、threadlocal、锁、线程池。多态、继承、封装的理解,主要是基础,具体问的大概忘了,并不深入。
二面聊天:一问,nginx 实现负载均衡的方式,底层如何实现负载均衡,zk 的实际案例,为什么用 zk,内部如何选举。大概这么多。