初级java面试题
本人在面试应届生岗位时,对碰到过的面试题大纲进行了一个梳理。主要涉及的模块有java基础、JVM、mysql、框架、redis、中间件、springCloud、项目经验、以及其他。
一、java基础
集合
1、集合框架有用过吗,大概说一下(list、set、queue、hashmap等)
2、说一下ArrayList与LinkedList的区别(数组,链表)
3、map有用过吗,说一下hashmap与hashtable区别(1.7与1.8分别说,hashmap底层重点)
4、保证并发的map说一下(ConcurrentHashMap,1.7与1.8,如何保证安全)
5、hashmap中的红黑树为什么不用AVL树(性能,hashmap源码注解)
多线程
1、为什么要用多线程,多线程用来做什么(异步)
2、创建多线程的方式(三种开发中不用的,点到线程池以及阿里编程规范这块相关说明)
3、说一下线程池(创建方式,参数说明,阻塞队列,线程数如何创)
并发
1、描述线程与进程
2、并发与并行的区别
3、锁(乐观锁,悲观锁)
4、讲一下CAS(synchronized时提到CAS,具体实现方式,JUC价包中的类)
5、JMM模型(将CAS提到,JMM三大特性,volitile不保证原子性)
6、synchronized,CAS,ThreadLocal进行比较
JVM
1、JVM内部结构(类加载系统,运行时数据区,执行引擎)
2、JVM运行时数据区(两种公有三种私有以及1.7和1.8变化,五种介绍一下)
3、新生代的分配情况(8:1:1以及使用的复制算法)
4、新生代使用的什么算法,为什么要用复制算法
5、JVM中有哪几种算法以及哪几种垃圾回收机制(复制,标记清除,标记整理;7大回收机制分别用的什么算法)
6、如何对JVM进行调优(目的是降低YGC以及减少FGC)
7、类加载的过程(加载过程以及类加载器,双亲委派机制)
8、linux中CPU占用太高怎么处理(top,top -H -p,jstack打印或者使用导出dump文件使用jvisualvm工具进行分析)
MySQL
1、mysql常见存储引擎并比较区别(InnoDB,MyISAM)
2、引擎中使用的索引(B+Tree)
3、为什么使用B+Tree(介绍与B Tree的区别以及其他Tree的区别,IO交互,性能,指向下一个节点等)
4、mysql的ACID特性介绍一下
5、mysql的几种事务隔离级别(与ACID相对应,脏读,不可重复读,幻读,默认级别等)
6、锁(行级锁,表级锁,读写锁)
7、慢查询如何进行优化(怎么用索引,最左原则,limit,使用枚举,varchar等)
8、mysql与postgresql的区别
框架
SpringMVC
1、springMVC的流程
2、springMVC与sturts2的区别
3、springMVC常用的注解
Spring
1、介绍一下spring(AOP,IOC)
2、spring的优点(低侵入式,降低耦合,AOP,集成优势)
3、springAOP的理解(业务,代理,具体实现)
4、springIOC的理解(IOC是一个规则,DI是具体实现,控制反转,注入方式)
5、springBean的生命周期(实例化,依赖注入,Aware,BeanPostProcessor,destroy)
6、spring如何处理线程并发问题(ThreadLocal)
7、spring事务的传播行为(七种事务传播的方式)
MyBatis
1、mybatis是什么
2、mybatis与hibernate区别(方式,移植性,自由程度)
3、mybatis如何进行分页
4、mybatis的一级,二级缓存
Redis
1、redis支持的数据类型以及应用场景
2、Redis与Memcached比较一下
3、redis的持久化方式(RDB和AOF)
4、reids如何实现分布式锁(setnx,时间,释放)
5、讲讲redis的主从复制
6、redis缓存雪崩,redis缓存穿透(布隆过滤器)
7、如何保证redis与数据库的数据一致性(修改时可以删除缓存,更新数据库,再删缓存)
8、实际中的应用(项目中存放用户信息,萤石设备信息,用户验证码对手机限制)
中间件
1、介绍下消息中间件(异步,解耦,削峰,传统模式缺陷)
2、常见的几种中间件,并简单介绍下(activemq,rabbitmq,rocketmq,kafka)
3、消息丢失了怎么办(丢失存在于三种情况下)
4、项目中如何使用的中间件(传消息给客户端消费,传萤石报警消息)
SpringCloud
1、介绍下springCloud,用到的组件(Eureka,zookeeper,Hystrix,Zuul,Ribbon,Fegin)
2、说一下Eureka与zookeeper的区别(CAP,自我保护机制)
3、Hystrix的原理(阈值,开启与半开启,解决服务雪崩)
4、说一下fegin
5、微服务的优缺点
6、谈谈对springboot以及springCloud的理解
项目经验
1、介绍下实习期间的项目,以及你参与了哪些开发
2、针对简历上项目功能询问具体实现(增删改查的尽量不要说了)
3、公司项目的开发模式,以及开发的一个大致流程
4、给出业务场景,该如何去实现(秒杀该如何去做,商品量有1w,只支持1000的并发怎么办)
其他
1、linux中CPU占用太高怎么办(top,jstack)
2、常用的linux命令有哪些
3、权限是如何进行控制的
4、说一下http与https的区别
5、说一下TCP的三次握手与四次挥手,为什么握手不能是两次,挥手不能三次
6、说一下session与cookie
7、对未来的职业规划是如何的(短期,中期,长期)