java常见面试题

初级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、对未来的职业规划是如何的(短期,中期,长期)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值