美文网首页互联网科技Java面经进击的java程序员
2019年成功入职阿里:阿里的三套Java研发岗面试题总结!

2019年成功入职阿里:阿里的三套Java研发岗面试题总结!

作者: 0c6545a942bc | 来源:发表于2019-04-17 20:24 被阅读21次

    第一套

    一面:

    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. 高并发情况,系统的优化方案有哪些,以及优先级排序。

    第二套

    一面:

    1. ArrayList 和 linkedlist 区别。ArrayList 是否会越界。
    2. ArrayList 和 hashset 有何区别。hashset 存的数是有序的么。
    3. volatile 和 synchronized 区别
    4. 多态的原理
    5. 数据库引擎 Innodb 和 myisam 区别
    6. Redis 的数据结构
    7. Redis 是基于内存的么
    8. Redis 的 list zset 的底层实现
    9. http 和 https 的区别,tcp 握手过程
    10. jvm 垃圾回收算法手写冒泡
    11. 手写单例包括多线程下
    12. Java 线程间怎么实现同步,notify()与 notifyAll()的区别
    13. 数据库的悲观锁和乐观锁应用场景。
    14. 排序算法的复杂度,快速排序非递归实现。
    15. 海量数据过滤,黑名单过滤一个 url。

    二面:

    1. list set map 底层使用什么实现的有哪些典型实现
    2. hashmap 扩容是怎么扩容的,为什么是 2 的幂
    3. concurrenthashmap 为什么线程安全,采用了什么措施应对高并发
    4. 线程池的参数有什么意义
    5. Springmvc 请求流程
    6. Spring IOC,autowired 如何实现
    7. Spring boot
    8. SpringClound 的基本架构设计
    9. Dubbo 和 SpringClound 的区别在哪里,优劣势
    10. 说说一致性 Hash 算法

    三面:

    1. 分布式架构设计哪方面比较熟悉
    2. 讲讲你对 CDN 的了解,与分布式缓存和本地缓存的区别
    3. 多线程和高并发有什么区别
    4. 高并发下有哪些常用的技术解决方案,举三个高并发场景设计例子
    5. 说一个你对 JVM 优化的实际案例,包括实际步骤和方法
    6. Docker 有使用过和了解吗?Docker 和 JVM 的区别是什么?
    7. Docker 的基本架构和使用场景?
    8. 负载均衡有接触过哪些开源框架,优劣势是什么?
    9. 数据库分库分表需要怎样来实现?
    10. 数据库端的常用优化策略?
    11. 如果让你来设计秒杀系统,你的设计思路是什么,为什么要这样设计?

    面试总结:

    1. java 的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashSet、HashpMap
    2. 的数据结果,以及如何扩容、以及 ConcurrentHashMap 相关的多线程安全等。
    3. JVM 的内存分配、几个常见的垃圾回收算法以及原理、还有对应的 JVM 优化参数需要牢记。
    4. 网络:TCP 的三次握手等网络都必问,重点掌握网络协议。
    5. Redis:作为分布式缓存的主力,基本也是 BAT 每次必考,重点是 Redis 的数据结构、内存、
    6. 算法、持久化,以及与别的缓存 memcached 的优劣势。
    7. 多线程:状态流转、多线程的实现,以及与高并发的区别等。
    8. Spring 框架问得是最多的,BAT 非常喜欢问,重点掌握。
    9. 最后就是分布式架构设计
    10. 常用的分布式架构设计方案:单点登录、分布式缓存、存储、消息的选型,还有就是数据
    11. 库端的优化方案(需要提前了解)。
    12. 最好能提前了解深入一个类似秒杀这样的项目,如果面试官问到类似的项目,你能把设计
    13. 思路讲出来,这对你的面试结果是很大的加分项。

    第三套

    一面

    1. 自我介绍
    2. 谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里
    3. Spring 的 bean 的作用域?(比如:singleton,prototype 等)
    4. Spring 的 IOC 实现原理?没有无参构造函数能实例化吗?有参构造函数注入?(xml 配置)
    5. 通过反射,谈到了方法区,然后,类加载机制?
    6. synchronized 的实现原理?Volatile 能保证原子性吗?为什么?
    7. hashmap 和 concurrenthashmap 的 size 方法怎么实现的
    8. JVM 的调优参数?(-Xmn,-Xms 等具体参数设置)
    9. 线程池优点,参数,如果我想实现 newSingleThreadPoll,应该怎么配置,构造方法传什么
    10. 参数
    11. mysql 死锁,怎么解决,如果不要求执行顺序,死锁怎么解决
    12. ioc 和 aop 原理
    13. 线程的五态?转化过程?
    14. TCP 三次握手,为什么三次握手?
    15. JVM 内存分区?(主存,工作内存,堆,栈。。。。)
    16. 讲一下 GC?
    17. 为什么要用老年代和新生代?
    18. 新生代进入老生代的情况?
    19. 新生代的分区?

    二面

    1. 变着法的问了一大堆线程池的知识 (主要考对应的参数)
    2. java 内存模型
    3. lock 和 synchronized 的区别
    4. reentrantlock 的实现
    5. hashmap 和 concurrenthashmap
    6. B+树和 B-树的区别
    7. 复合索引
    8. 聚集索引和非聚集索引的区别?
    9. 数据库索引 主键和唯一索引有什么区别
    10. 索引失效条件,什么时候该建立索引
    11. innDB 和 MyISAM 的区别?
    12. 线程安全(阻塞同步,非阻塞同步,无同步)

    三面

    1. 主要高并发和分布式架构设计
    2. 服务器模型以及之间的区别
    3. 线程池的设计
    4. 线程池如何做负载均衡
    5. 如何实现线程调度算法
    6. 复合索引是如何实现的?
    7. 如何设计单点登录,单点登录的原理
    8. redis 缓存和 memcached 缓存的区别,以及各自的优劣势
    9. 大型高并发网站如何做性能优化:Web 性能、数据库性能、应用服务器性能等。
    10. 实践中如何优化 MySQL:SQL 语句及索引的优化、数据库表结构的优化、系统配置的优化、
    11. 硬件的优化
    12. 分库分表和读写分离如何设计
    13. 微服务架构:dubbo 和 springcloud 的区别,以及各自对应的使用场景。

    总结:

    希望这三套面试题能够给在求职路上的你一些帮助,同学我也帮大家整理了部分的答案和更多的面试题给大家,希望大家在面试的时候也能够用到。同时技术上面有待提升的朋友,小编也为大家准备了架构进阶视频资料(包括高可用,高并发,spring源码,mybatis源码,JVM,大数据,Netty等多个技术知识的架构视频资料和各种电子书籍阅读)

    资料获取方式:

    请加JAVA架构技术交流群:714827309
    点击链接加入群聊【JAVA高级架构技术交流】:https://jq.qq.com/?_wv=1027&k=51OhGuo

    image image image

    相关文章

      网友评论

        本文标题:2019年成功入职阿里:阿里的三套Java研发岗面试题总结!

        本文链接:https://www.haomeiwen.com/subject/sheowqtx.html