最近在跟群里的读者交流,有一个兄弟的经历让我记忆犹新:

上个月参加了大学同学聚会,和几个在BAT的同学聊了聊技术,发现自己在创业公司的这三年,完全没有精进什么技术,反而一直是在吃老本的状态,突然感慨,都是一样的起步点,三年过后原来人与人之间的差距可以这么大....

其实他最近面试了阿里,备受打击,面试官问了很多问题,一大半的问题我都是一知半解,能回答上的几个都是支支吾吾的回答,特别没有底气。

 

正好我也问了他这次面试都问了些什么问题,跟大家分享一下吧:

蚂蚁中间件一面

  • 自我介绍
  • JVM垃圾回收算法和垃圾回收器有哪些,最新的JDK采用什么算法?
  • 新生代和老年代的回收机制
  • 说说反射的用途及实现
  • HTTP 请求的 GET 与 POST 方式的区别
  • Arraylist 与 LinkedList 区别
  • HashMap 的工作原理及代码实现
  • 说说 CountDownLatch 原理
  • ThreadLocal 原理分析
  • 讲讲线程池的实现原理
  • 乐观锁的业务场景及实现方式
  • synchronized 与 lock 的区别
  • Java中的多线程,以及线程池的增长策略和拒绝策略了解吗?
  • Tomcat的类加载器了解吗?
  • Spring的ioc和aop,Springmvc的基本架构,请求流程
  • Java的网络编程,讲讲NIO的实现方式,与BIO的区别,以及介绍常用的NIO框架

一面主要问了一些Java基础知识、JVM、集合、线程等等,这部分准备比较充分,因此面下来的感觉还是挺好的。

蚂蚁中间件二面

  • 线程池的几种方式与使用场景
  • 你在项目中怎么用到并发的?
  • 消息队列的使用场景,谈谈Kafka
  • Dubbo和Spring Clound的区别,以及使用场景
  • 讲一下docker的实现原理,以及与JVM的区别
  • MongoDB、Redis和Memcached的应用场景,各自优势
  • MongoDB有事务吗?
  • 说说分库与分表设计
  • Redis 内存淘汰机制
  • Redis 集群方案与实现
  • 消息的堆积解决思路
  • 请列举出在 JDK 中几个常用的设计模式?
  • Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
  • 在 Java 中,什么时候用重载,什么时候用重写?
  • 谈下你对 Zookeeper 的认识?
  • RabbitMQ 中的 broker 是指什么?cluster 又是指什么?
  • 假设服务器经常宕机,你从哪些方面去排查问题?

在这一面基本上是凉了,主要是之前工作经验太少了,自己技术储备也比较浅薄,但是关键是最后居然还问了我一个设计相关的问题,我当时真的心态爆炸了,整个人都是懵逼的....

 

后话

面试完后,他觉得自己在技术上欠了很多债,最惨的莫过于在这之前他根本不知道。也正是因为他的事情才有了今天这篇文章,很多工作了1—3年的Java的人,想够一下3w月薪的岗位,但在底层技术以及基础上有很大的问题:

你可能毕业几年后,表面上使用过很多技术,但都没有深入学习过,说直白点就是会用,但是不知道为什么要用,不知道其原理,遇到实际问题无从下手。

都说三年是一个程序员的坎,能否晋升或者提高自己的核心竞争力,这几年的努力显得尤为关键。

最后

现在金三银四也开始陆陆续续的准备了,其实春招的招聘难度是大于秋招的,有许多读者也在问我要一些最新的面试真题,我也收集了很多读者以及其他的优质面经,整理成了pdf,分享给粉丝朋友,只需要扫描下方二维码即可免费领取!

 

系统技术分类系列

JVM、MySQL、Mybatis、MongoDB、Redis、Spring、Spring boot、Spring cloud等等