引言

想必大家都知道:最近几年的最严重的互联网寒冬来临,各位兄弟都会说“江湖再见”。耳边总是充刺着流言蜚语,这个地方裁员了,这个地方缩减HC。弄得人心慌慌。年后将是一片血雨腥风,程序界的江湖将在这一天精彩斑斓。

但我们要知道,寒冬之中,什么是最珍贵,就让鄙人告诉你:人才。只要有过硬的技术和装备,在逆风直下的情况下,咱们也能迎难而上,打他个戳手不及。不是“李云龙”大哥说:“过狭路相逢勇者胜。”

 

我准备了一套阿里淘宝JAVA程序员面试题,大部分题目不设标准答案,重点考察面试者的基础知识和思维逻辑,答案的提示可以后台私信【答案】获取!

一面:

  1. HashMap实现原理,ConcurrentHashMap实现原理
  2. 红黑树,为什么允许局部不平衡
  3. TCP,UDP区别,为什么可靠和不可靠
  4. 一次HTTP请求的全过程,包括域名解析、定位主机等
  5. TCP三次握手
  6. MySQL事务是什么?四大特性,四大隔离级别
  7. ConcurrentHashMap和Hashtable区别
  8. spring IOC和AOP,以及各有什么优点
  9. 有哪几种常用的线程池
  10. 什么情况下使用Runnable和Thread创建线程,Runnable和Callable的区别
  11. 线程方法中的异常如何处理,副线程可以捕获到吗
  12. synchronized和锁的区别,什么情况下使用synchronized和ReentrantLock
  13. JVM的对象分配在哪个区,Class对象分配在哪个区

二面:

  1. 常用的设计模式介绍:单例模式、装饰者模式等
  2. Java会出现内存溢出吗?什么情况下会出现?
  3. 双亲委派模型,为什么这样做?
  4. 对象什么情况下进入老年代?
  5. 快速排序说一下过程
  6. AOP实现原理:动态代理
  7. BIO、NIO(如何实现的)、AIO
  8. 消息中间件有哪些?他们之间的优劣势?
  9. Redis,持久化框架
  10. 栈和队列
  11. 垃圾回收算法
  12. MySQL的索引
  13. Tomcat 类加载器
  14. OOM内存泄漏,什么情况下会出现,如何排查

三面:

  1. 介绍你实践的性能优化案例,以及你的优化思路
  2. 微服务和SOA的区别,优劣势
  3. SQL慢查询的优化方案,索引和表的优化方案。
  4. MySQL与MongoDB的区别,海量数据的存储
  5. 缓存框架,例如Redis、Memcached之间的区别,优劣势比较
  6. 请描述一致hash算法
  7. 分布式session的共享方案有哪些,有什么优劣势
  8. 高并发情况,系统的优化方案有哪些,以及优先级排序。

HR面

 

  1. 问项目,问的特别特别细,技术细节,还有遇到什么问题,怎么解决的,做项目有没有人带,怎么跟别人沟通的。
  2. 数据库优化,如果数据库一个表特别大怎么办 数据库优化我就讲了之前讲过很多遍的点,他问一个表特别大怎么办:大表分小表,怎么实现:使用分区表
  3. 问研究生的科研题目,为什么选这个题,看了一些什么论文(细到问我那些论文是发表在什么期刊上的,作者是哪所学校的),为什么要选这个算法,怎么优化的,实验结果怎么跟别人作对比的,为什么比别人的算法好(一个个问题不断砸过来,我猜我说的那些专业名词他应该不太懂,只是判断一下是不是我做的而已。。)
  4. 确定实习时间 这一面确实让我感到有压迫感,项目是本科做的,挺久了,一些技术细节上也没太总结,所以问细了我只能连想带编,嘿嘿。科研方面倒还好,上个学期都在弄这个,一些算法的实现和改进、对比都还记得比较清楚,回答的挺流畅的,可能这真的就是技术型的hr面吧。

 

面试总结

天猫的面试特别喜欢面试技术原理,特别是:

  1. 多线程
  2. NIO
  3. 异步消息框架
  4. 分布式相关的缓存算法等
  5. JVM的加载过程和原理
  6. 回收算法
  7. 以及具体使用过的框架,会问部分参数检验你是否熟用

第一面被通过,后续被录用的可能性就会很大了,第一轮非常重要,建议系统的学习面试题

就面试而言,有时候能发挥出150%的实力,有时候却只能发挥出50%。

我对提前做面试题的看法:面试就如同学生时代的考试,有些人平时学习认真,裸考也能名列前茅;有些人平时懒一些,考前拼几周也能获得不错的成绩。

借此分享我总结收集到的面试资料以及我多年来的一些架构视频资料!

 

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!

现在是跳槽招聘季,为了解决小伙伴们的燃眉之急

我这里也准备了一些JAVA程序员面试题,小伙伴可以试试。

获取免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构视频学习资料以及电子书资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!