蘑菇街、蚂蚁金服等公司的Java面试题

工作时间参考: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
Kafka原理
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

猜你喜欢

转载自blog.51cto.com/12181171/2369624