天天看点

蘑菇街、蚂蚁金服等公司的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

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

继续阅读