本文搜集来自网络:http://www.hollischuang.com/archives/4856
第一次技术面(60min)
- 说一说你使用的是什么样的线程池,自定义线程池的几个参数是什么
- 说一说线程池的执行流程
- 你的项目中定义的核心线程数、最大线程数和队列大小是如何定义的?为什么这样定义?(这道题根绝我导师给我说是一个加分项)
- 在项目中如何防止超卖现象
- 你的下订单的sql语句如何编写的?(考察MySQL的乐观锁)
- 如果有用户反馈说整个系统的反馈比较慢,你是如何排查和如何解决问题的?
- 影响系统响应慢的原因有哪些?
- 算法题:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合,并指出其时间复杂度。(很简单的一个算法题,leetcode easy难度)
- 了解过JVM内存模型么?说说哪些是线程独享、哪些是线程共享的?
- 详细说一下Java堆的分区,他们的比例,以及如果把比例调大以后会有什么样的后果?
- 说一下JVM的GC算法,以及为什么“标记-整理”法更好一些,他能解决什么样的问题?
- 了解过Java类加载机制么?一共有哪几种类加载器?
- 如果你想查看线上正在运行的服务的GC日志,你需要输入什么指令?
- 了解过HashMap么,说一下HashMap的原理。
- 如果两个对象hashCode相同,则一定是相同对象么,如果是两个相等的对象,那么他们的hashCode相同么?
- 如何解决hash冲突?
- HashMap是线程安全的么,如何把HashMap变成线程安全的类?
- 说一说MySQL数据库有哪些数据库引擎?
- InnoDB的索引的数据结构是什么,说一说他的原理
- 数据库事务等级以及他们解决了什么问题,请举例说明一下
- MySQL默认的事务等级是什么?
- MySQL如何开启慢查询?
- 说一下Spring主要包含哪些模块?
- 说一下你对Spring的IOC容器的理解以及启动流程
- 有了解过RPC框架或分布式的东西么?(这个后来问面试官,就是考察对新技术的了解以及对互联网发展的一个关注度)
- 说一下你读过的有关Java的书籍
第二次技术面(30min)
- 介绍一下你做的项目中你觉得最好的那个;说一下你这个项目中的技术难点和挑战。
- 如何解决商城项目中出现的超卖、少卖问题?
- 说一下什么是幂等性
- Redis如何保证高可用的
- Redis的哨兵模式知道吗?
- 你用Redis觉得有什么缺点吗?
- 你是如何做压力测试的?压力测试的数据是什么?
- 线城池有哪些参数?
- 核心线程数和最大线程数有什么区别?
- 常见的拒绝策略有哪些?
- 介绍一下SpringBoot的特性
- 说一下什么是单例模式
- 什么是饿汉模式、懒汉模式
- 使用懒汉模式的注意事项以及如何解决
- 说一下volatile关键字的作用和原理
- 说一下自旋锁和一些常见的自旋锁的实现
- 说一下数据库的左外连接
- 数据库索引优化
- 数据库索引的数据结构
第三次技术面(25min)
- 如何解决商城项目中出现的超卖、少卖问题?
- 在开发项目中,遇到了那些问题?
- Redis与数据库同步时候出现问题是如何解决的
- 说一下Java当中线程有哪些状态
- 线程的阻塞和等待有什么区别
- 介绍一些Java的锁机制
- 你了解过哪些锁的类型
- 为什么
wait
、notify
这个方法会在Object这个类下面 - 分布式、RPC框架有了解过吗
- Redis的线程模型是什么(考察NIO)
- Redis实现的消息队列是如何保证消息不丢
- 介绍一下堆排序是如何实现的
- 介绍一下TCP/IP协议是如何保证消息可靠传输的
- TCP/IP协议做了什么优化(拥塞控制和流量控制)
第四次技术面(15min)
- 说一下你投稿的文章写得是什么内容
- 介绍一下消息队列
- 超卖是如何解决的?
- 下单过程是如何设计的?
- 介绍一下雪花算法
- 你怎么理解分布式?
- 分布式之间怎么通信?
- 生产者、消费者模型是怎么工作的?
- Java里面创建线程的方式
- 代码场景:给一个字符串,统计每个大写字母出现的次数,按着次数排序,从小到大输出字母和其出现的次数
交叉面试(30min)
- 你在学校学习过程中,哪些可能成绩更好一些以及为什么这些课程成绩更好一些
- 你学习Java多长时间了
- 你是如何学习Java的?
- 你看过哪些开源框架源码?
- 你是怎么看开源框架源码的?
- 介绍一个你参与较多或者比较有难度的项目
- 你们团队开发项目的时候有没有大家一起解决的某些技术问题
- 你们做的这个项目有没有借鉴过其他已经成熟的项目
- 说一下你们项目的要求和指标大概是多少
- 你们项目中的线程池队列容量是如何确定的
- 项目中的某些解决方案是个人想出来的还是团队讨论的结果
- 如果再让你做一个商城系统,你会做哪些技术选型
- 项目中做过哪些安全方面的措施
- 你会如何设计一个淘宝会员系统?
- 你未来的发展方向是什么?
收集于网络 https://www.jianshu.com/p/5fe981fd4ab9
阿里一面:
- 自我介绍、自己做的项目和技术领域
- 说一下sync的底层实现,锁优化,和lock的对比
- 讲一下JVM参数调优详细过程
- 为什么这么设置?好处是什么?描述gc场景,如何去分析gc日志?
- redis数据结构,使用场景,微博场景使用redis如何去设计用户关系?
- 线程池参数设定,为什么这么设定,作用?7大参数
- spring的循环依赖如何解决?为什么要三级缓存?
- 优先级队列的底层原理?
阿里二面:
- 自我介绍一下吧
- 聊项目
- 结合你项目问你如何设计,提出漏洞,你怎么解决?如何改进,万一挂了?加一台机器有没有问题?如果我非要不出问题怎么办?
- 高并发下单扣库存场景如何设计
- rocketMQ架构设计原理
- Dubbo框架实现原理
- 最近读了什么书?平时怎么学习?
- 常用的负载均衡,该怎么用,你能说下吗?
阿里三面:
- 这一面主要问项目,给你的压力感比较强
- 结合项目问,为什么这么设计?让你去优化,你怎么优化,引导你用一个合理的更好的方式去优化,数据库的设计等
- 在公司做了什么事情,各个系统业务线都是做什么的,你的绩效,手写算法链表反转?
阿里四面:
- JVM的主要组成部分及其作用?
- JVM运行时数据区包含哪些?
- JVM垃圾回收机制,何时触发MinorGC等操作
- JVM的垃圾回收算法:
- JVM 调优的工具?
- 常用的JVM调优参数?
- 堆栈的区别?
- 详细介绍一下 CMS 垃圾回收器?
- 怎么判断对象是否可以被回收?
- 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
- java类加载过程?
- 把你知道的中间件都说一下吧(瞬间懵了一下)
HR面:
- 为什么来阿里?
- 之前没考虑过阿里吗?
- 毕业这么久了,你觉得自己最大的改变是什么?
- 用一句话总结一下自己