分布式锁
websocket
zookeeper
重入锁
class的加载过程
GC原理(新生代、老生代、gc回收策略-mark-swap、copying、压缩、分区)
Nginx相关知识以及日志文件处理
spring相关知识(aop、ioc,bean的生命周期(中哪个地方可以提供给开发者使用))
设计模式(单例模式(懒汉式、恶汉式写法)、工程模式、代理模式-尤其是动态代理、发布订阅模式)
jdk代理和cglib代理的区别作用
多线程相关(线程的几个状态之间的转换,wait和notify作用)
常用的集合(hashmap的实现原理,hashtable的区别,常用的list集合)
list不是线程安全的,用什么方式可以变成线程安全的(Collection.synorizedList()或者使用copyAndWriteList-线程安全的)
currentHashMap的实现原理(可以看下内部实现,segment[]、hashEntry,分段存储和枷锁,可以实现并发读,同一个segment的竞争锁,内部使用valite和cas实现)
Java.lang.util.current下面的多线程实现类多看看,内部都是使用valite和cas实现线程所
lock、reteentLock,retrentReadWriteLock等类,是重入锁,可中断等特性以及里面的方法都看看
ExecutorService 线程池的几种策略
主线程等待子线程执行完,在执行,怎么实现
future 线程的返回值,以及callable等也要搞清
redis的持久化,集群、缓存策略(LRU、FIFO)
LRU-K,最近最少使用算法,有几种变体,也看看
spring中如果我只想给特定的几个service里面的方法打日志,怎么做(AspectJ注解实现)
可以看看@AspectJ注解的里面的一些知识
MQ怎么解决重复消息的消费问题
MQ底层实现看过源码,知道里面的内部实现吗?
分布式锁,和分布式事物相关知识,项目中有没有用过,怎么用的
rabbitMQ也没用过吗 没事,你没用的他一般不会问的 主要是根据你用的技术提问
数据库事物相关知识
数据库索引,有的会问存储过程、视图等知识
还有就是一些算法,排序、统计、链表相关
譬如{1,2,6,4,-1,3,7,-4,12,24,-2,-13,13,45},一个数组,里面有整数和负数,连续子集:例如{1},{1,2}、{4,-1,3}等,找出sum和最大的连续子集
head->3->4->1->6->null单向列表,写一个算法,使之反转
jvm堆栈
gc原理
sql tune
b+ tree
红黑树
netty dubbo rpc 协议 服务注册发现怎么实现的?
volatile jmm
redis锁 setNx delete
线程的底层实现,在jvm层面,在java lang层面
cas
秒杀
二叉树
二叉树对称反转
AQS
Dubbo底层实现
数组中选出值最接近number的两个数
最小时间复杂度
线程池
达达-面试
线程池,分布式锁的应用,同步锁关键字,并发锁,并发包常用类,hashmap hashtable concurrenthashmap 数据结构和差异,volatile 关键字,数据库隔离级别,自定义线程的三种方式和区别 ,jvm调优,jvm内存模型
可能会有熔断 分布式事务/锁 之类的
今日头条面试:
- golang优势
- mysql索引结构,聚合索引,非聚合索引,B+树,还有B树
- redis分布式锁实现,key过期设置失败情况分析,setnx,setex
- redis数据结构,注意高级数据结构pub/sub,pipeline
- redis keys获取
- mysql隔离级别,可重复读实现方式,事务实现
- 算法,rand7 实现rand7
- mysql可重复读实现原理,(回答的缓存)snapshot
饿了么面试:
- zookeeper功能,配置管理,注册中心,一致性,
- zookeeper节点类型,锁实现(分布式锁实现)
- zookeeper master选举,fastpaxos,paxos
- spring cloud服务架构体系
- eureka注册中心特点,与zookeeper对比
- eureka客户端发现,服务端发现
- 负载均衡,客户端负载和服务端负载均衡
- redis过期策略,实现(key删除实现)
- mq ack机制,mq延时队列实现
- mysql索引(“男女”是否需要索引)
- mysql select from where group by order by 顺序
- mysql order by 排序实现,索引排序,内存排序
- JVM分区,stack OOM分析
- JDK8特性
- JDK8 lamabda ,stream exception,当时有点懵逼,其实就是简单的各种形式的try catch,内部,外部
- Map分析,扩容,rehash策略
- hashcode equals方法
- redis分布式锁实现
- redis集群,sharding方案分析,主备容灾分析,槽位替换方法
- 如何实现mysql-proxy,协议mvvc,负载等
- session落地实现,分布式问题,强制读主方案考虑
- 机房异地多活问题分析,偏序时钟问题
- 分表分库问题分析
- 区块链场景分析(个人提到所以要分析)
项目总结
Java核心、设计模式、分布式组件原理、微服务原理、RPC原理、系统架构、高并发问题、数据库大数据问题
最近几年犯过最大的错误是什么,以及他错误从中学习到什么。
- 基金服务,基金数据的及时准确更新
- delete or update()
- cron中rpc超时导致,下一个请求调用失败,解决方法,消息队列,callback
- 组合收益率计算,组合调仓
- 代码优化,大量的使用function,范型方法,效率问题,多线程
- 推荐服务,根据产品定义相关规则推荐基金
- JVM内存管理,垃圾回收
- 如果处理MQ重复消费
- 如何理解zookeeper?
- 线上服务突然开始频繁的 full gc
- cpu 占用高你怎么排查之类的(rpc累积)
- 简单的快排, 二叉树反转
- 双亲委派机制
- 分布式事务
- zookeeper分布式锁
- RPC原理,比如他是怎么通过proxyFactory 到注册中心 到Nio 到返回到异步到通知到uniqueId
- mysql两种存储引擎的区别,设计结构上区别,聚集索引的实现原理
- 怎样分析内存泄露
职业规划
- 3-5年发展目标,技术leader
- 关注的技术,分布式,锁,区块链
- 项目亮点
今日头条golang面试
- 算法题
- hash一致性
- 红黑树
滴滴Java面试
- hashcode equals,hashcode相等的两个对象一定相等吗?equals呢?反过来相等吗?
- 最短路径算法
- 最小堆,树排序
- 单例,spring controller 非单例
- ThreadPool 参数
- spring流程
阿里一面面试:
- 项目介绍(SOA-》微服务 why)
- 缓存设计,缓存击穿怎么做(服务降级,和消息队列)
- 单一业务调用链介绍
- IO,NIO
- 锁,特别说了读写锁(sychronized ReentrantLock三者区别)
- HashMap结构,实现
- HashMap put过程,同key;同hashcode
- cas
- 熟悉框架简单介绍(redis实现原理)
- JVM内存结构,OOM排错过程(JVM调优)
- AOP原理(JDKProxy,cglib),RPC
- SQL优化
阿里二面面试:
- 自我介绍
- 项目介绍(提前准备)
- session,cookie区别,分布式session处理
- 交易一致性处理(mq消息队列)
- 设计模式(尽可能多的说出设计模式,面试官就不会追问了)
- JVM内存结构,各代划分,垃圾回收过程,垃圾回收算法(问的很细,最好一次性描述清楚)
- JVM内存模型(多线程,主内存,内存副本关系)
- 印象最难的(场景)问题(这个要好好准备,必问,自己先想好场景)
- 项目架构(机器台数,服务处理,job处理)
- SQL优化,索引
阿里三面:
- 编程面试,100w数据求和,至少4中方式,reduce
- soa和微服务架构区别
- JVM
- 性格,特点,业余干什么
- JVM过程描述
- 项目中比较亮的点
- 跳槽原因
- 目前公司对你的评价
- 目前KPI
- 熟悉的开源框架,是否读过开源框架源码
阿里四面:
- 高可用系统设计
- 降流设计(hysthrix command计数器实现)
阿里五面:
- 项目介绍,注意条理性,层次性,注意听面试官问问题的方式,按照改方式回答
- 碰到过的技术难点,业务难点
- 这一轮面试非常重视思维逻辑能力和问题表述方式
- 逻辑思维能力,表达能力,沟通能力,分析问题能力,面试技巧
阿里六面(HR面试):
- 能够给公司带来什么利益
- 比其他候选者优秀的地方
- 为什么能够有这么高的涨幅
- 项目介绍
- 问题回答技巧,心平气和,说话不能太直
这几个问题:比如你为要这么高的涨幅,你能给阿里带来什么利益,你比其他候选人优秀在哪
失败原因:第一气场上就输了,第二很多非技术问题面试不好,第三面试技巧不够
平安面试总结:
- Mesi,缓存一致性协议
- AQS,AtomicLongArray, Unsafe, CAS
- 线程写回主内存
- Transaction 实现过程,实现原理
- Mysql 索引实现,B+树构建过程
- 字符串反转
- 算法:列举所有给定数组中和为定值的组合
- 多线程同步方式,线程池原理
- JVM
- 论坛帖子回复表设计
- 字符串反转
英语流利说面试:
- goroutin模型
- go schedule切入,切出
- go内存溢出,垃圾回收
- mysql慢查询,索引
- go channel阻塞,优雅关闭
- redis和mq可靠性对比,持久化问题
- explain 执行树分析
东亚银行:
- IoC,反射,反射实现方案
- spring boot加载流程
- JVM分区
今日头条面试:
- golang优势
- mysql索引结构,聚合索引,非聚合索引,B+树,还有B树
- redis分布式锁实现,key过期设置失败情况分析,setnx,setex
- redis数据结构,注意高级数据结构pub/sub,pipeline
- redis keys获取
- mysql隔离级别,可重复读实现方式,事务实现
- 算法,rand5 实现rand7
- mysql可重复读实现原理,(回答的缓存)snapshot
饿了么面试:
- zookeeper功能,配置管理,注册中心,一致性,
- zookeeper节点类型,锁实现(分布式锁实现)
- zookeeper master选举,fastpaxos,paxos
- spring cloud服务架构体系
- eureka注册中心特点,与zookeeper对比
- eureka客户端发现,服务端发现
- 负载均衡,客户端负载和服务端负载均衡
- redis过期策略,实现(key删除实现)
- mq ack机制,mq延时队列实现
- mysql索引(“男女”是否需要索引),索引优化(可以考虑聚合索引)
- mysql select from where group by order by 顺序
- mysql order by 排序实现,索引排序,内存排序
- JVM分区,stack OOM分析
- JDK8特性
- JDK8 lamabda ,stream exception,当时有点懵逼,其实就是简单的各种形式的try catch,内部,外部
- Map分析,扩容,rehash策略
- hashcode equals方法
- redis分布式锁实现
- redis集群,sharding方案分析,主备容灾分析,槽位替换方法
- 如何实现mysql-proxy,协议mvvc,负载等
- session落地实现,分布式问题,强制读主方案考虑
- 机房异地多活问题分析,偏序时钟问题
- 分表分库问题分析
- 区块链场景分析(个人提到所以要分析)
挖财面试:
- 业务介绍
- 容错处理
- 架构介绍
- mq消息队列
- 幂等处理,表单重复提交处理
- 分布式事务,分布式锁
- 分布式job实现,技术选型
蜻蜓FM面试:
一面:
- 当前项目架构分析
- 服务注册发现实现
- 负载均衡实现,nginx负载均衡算法
- 分布式服务部署实现,请求转发方案
- 分布式服务问题排查
- redis集群方案
- redis底层实现细节,基本数据结构等
- mysql集群方案
- mysql索引问题,B tree和B+ tree区别,分析各自情况
- code,实现二叉树所有叶子节点相加
二面: - 项目分析
- 业务功能设计
- app推送实现
- 消息队列
- 算法,环形加油站问题,暴力破解和数学解法
- golang语法,defer问题
三面(以下都是白板画图): - Spring MVC理解,架构
- 讲解Spring boot流程,图示
- Spring api请求过程图示
- db链接池原理,图示
- golang如何实现线程池,图示
一份面试题
1 试从B+tree数据结构角度解释为什么对于一个包含了索引的数据库表字段应尽量避免update操作?
2 在一个java程序中,请设计一个辅助线程来实现对住县城的守护,当主线程因异常情况消亡时,辅助线程能够检测到并重新启动一个主线程来继续执行任务
3 对于hotspot vm的字节码执行引擎,当一个栈结构中的局部变量表的slot出现重用情况时对gc会有哪些影响?
4 使用cas机制更新变量值时如何避免出现aba问题,jdk中是否有提供相应工具解决aba问题?
5 spring中用于存储bean的数据结构是什么,在ioc中为什么要使用这种数据结构?
6 如何提高mybaitis的批量更新或插入性能?
7 什么是csrf攻击,如何进行预防?
8 对于一个企业应用信息系统,请详述应该如何进行系统设计来使得系统具备高可用特性?
9 请详述在一个chrome地址栏中输入www.sina.com.cn,从按下回车到页面渲染结束,本地计算机/网络/服务器端的整个执行和交互过程,越详细越好
有疑问加站长微信联系(非本文作者)