工作时间参考:17年开始工作,18年6月份毕业,算上实习一年半工作经验。近一个半月,先后参加了很多公司的面试,有失败,也有成功。面试题如下:
1、蘑菇街:
java1.8新特性——lambda表达式
redis的相关操作
项目中redis表的设计
redis的数据过期策略
常见的数据结构
遍历map的几种方式
mysql、redis的设计思路
业务逻辑的梳理
main方法用private修饰会怎样?
arraylist和linkedlist的区别
多线程死锁怎么解决
数据库里有海量数据,在不建索引的条件下,用java代码实现快速查找出某个字段的最大一百条
2、微医集团:
map——自己尽情扩展
用过的线程池和线程
设计模式——单例模式和观察者模式
数据库优化以及常用sql语句调优
jvm调优,如何防止oom
日志——log4j2
缓存算法如何实现
maven命令解决jar包冲突
常用linux命令
spring cloud——oauth2、hystrix以及其他组件
kafka原理
redis相关操作以及原理
用过的消息队列
介绍zookeeper
bio、nio、aio的使用场景和实现原理
spring boot的加载原理以及加载过程
spring applicationcontext和beanfactory
3、蚂蚁金服:
mysql索引
redis分布式事务锁
线程池常用参数的配置,以及最大线程数根据什么来确定
spring aop怎么拦截,原理
什么时候要重写hashcode和equals方法
乐观锁和悲观锁
java内存模型
设计模式
如何释放线程,分别要注意什么
arraylist实现原理,相对于数组的好处
linkelist的实现原理,为什么用双向链表
hashmap的实现原理
concurrenthashmap的实现原理,jdk1.7和jdk1.8实现有什么区别
用过的锁——sychronized和lock,为什么说sychronized是重量锁,效率低在哪
nio的原理以及使用
循环依赖
蚂蚁面试官的建议:1、平时做项目的时候要有自己的想法,而不是单纯的按照需求文档来开发,多想想为什么要那么设计,好在哪,亮点在哪;2、多看源码,看源码的设计思路,如果是自己,会怎么去设计;3、多了解数据结构的实现和新技术的实现原理。
4、大搜车:
string、stringbuilder、stringbuffer的实现原理——源码
spring的beanfactory和applicationcontext的区别
spring bean的生命周期
elasticsearch、logstash、kibana
redis的优点、原理
单例模式的几种实现方式,每种都有哪些问题
volatile关键字
重载、重写的区别
object里面常见的方法
静态方法加锁和普通方法加锁有什么区别
类的加载过程
jvm模型介绍以及如何调优
5、百世集团、穆天机器人、创泰科技:
手写代码:
1、去除一个数组里面的重复元素;
2、一个数组里只有0和1,求0到1的最远距离(eg:[0, 1, 0, 0, 1] -> 返回2)
建模一个人去饭店吃饭的全过程
collection介绍——自由发散
map介绍——hashmap和concurrenthashmap的区别及源码分析
线程、数据同步
mysql调优
jquery调优
dubbo和spring cloud
redis存储的数据类型
spring的ioc和aop
实现线程的几种方式
spring的事务
6、浙江大华:
线程:start和run方法的区别;
线程池参数
有哪几种链表,每种有什么实例
spring boot启动过程
redis持久化方式
缓存算法
什么时候会发生gc,jvm调优
kafka+elk的日志系统的搭建过程
集群中选举策略的原理
elasticsearch数据的存储格式
spring的定时任务
redis的过期策略
spring cloud——熔断器hystrix