2020最新java面试题:各企业面试真题

java基础

1、java class加载机制(classload类加载器)
2、hashmap、hashtable、hashset实现原理、线程安全性,hash冲突及处理算法;Hashtable 是怎么加锁的?HashMap 的并发问题?ConcurrenHashMap 介绍及原理?为什么要有concurrentHashmap?1.8 中为什么要用红黑树?HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?HashMap 的扩容过程与计算公式,为什么要用位运算(位运算直接操作内存,不需要进制转换)?为什么是2倍?初始化大小?负载因子?hash冲突解决?HashMap 1.7 与1.8 的区别,说明1.8 做了哪些优化,如何优化的?链表超过多长时会转化为树(6链8树,7避免转换)
3、java object的方法,有哪些方法?作用是什么,重写hashcode的作用
4、orm的理解(对象关系映射)
5、Synchronize修饰同一个类两个方法,Synchronized是否可重入,原理,Synchronized关键字的类锁,方法锁,重入锁;synchronized 的实现原理以及锁优化?synchronized 在静态方法和普通方法的区别?
6、耦合与解耦
7、抽象类是什么?特点?abstract与接口的区别?举例一个抽象类的实现场景?
8、http的几个版本,1.0和1.1的区别。
9、map同步,jdk关键字的原理,preablocal如何实现?
10、集合类以及集合框架;
11、进程和线程的区别;
12、Java的并发、多线程、线程模型;
13、什么是线程池,如何使用?
答:线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。
14、数据一致性如何保证;
15、Java中实现多态的机制是什么?以及实现原理;
16、如何将一个Java对象序列化到文件里;序列化id有什么用?(验证版本一致性,以防不识旧数据)
17、说说你对Java反射的理解;
答:Java 中的反射首先是能够获取到Java 中要反射类的字节码,获取字节码有三种方法,(1).Class.forName(className)(2).类名.class(3).this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们所使用。
18、同步的方法;多进程开发以及多进程应用场景;
19、在Java中wait和seelp方法的不同;
答:最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。sleep是thread类的静态方法,wait是object类的方法,用于线程通信。
20、synchronized 和volatile 关键字的作用及区别,volatile 的实现原理;
答:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
(1).volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的
(2).volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性
(3).volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。
(4).volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化
21、服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;
22、ThreadLocal原理,实现及如何保证Local属性;
23、String StringBuilder StringBuffer对比;
24、你所知道的设计模式有哪些;
答:
Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
25、Java如何调用c、c++语言;
26、接口与回调;回调的原理;写一个回调demo;
27、泛型原理,举例说明;解析与分派;
28、抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;
区别:(1)接口中的所有方法默认都是抽象的,public abstract;(2)抽象类可以有普通变量,非抽象普通方法,接口中必须是抽象方法;(3)一个类可以实现多接口,但只能继承一个抽象类
29、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
30、修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;
31、说说你对泛型的了解;
32、Java的异常体系;
33、如何控制某个方法允许并发访问线程的个数;
34、动态代理的区别,什么场景使用;
35、堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面);
36、死锁的四个必要条件;
37、常见编码方式;utf-8编码中的中文占几个字节;int型几个字节;char类型变量是否可以存储一个中文汉字(可以),unicode编码英文存储一个字符,中文俩个字符
38、TCP的3次握手和四次挥手;TCP与UDP的区别;
39、HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构;
40、HTTP与HTTPS的区别以及如何实现安全性;;
41、List 和Set 的区别
42、HashSet 是如何保证不重复的
43、final finally finalize
44、强引用、软引用、弱引用、虚引用
45、Java 的信号灯?
46.什么是迭代器?
47、collection和collections的区别?
48、finally块中代码什么时候执行?
49、异常处理的原理是什么?运行时异常和普通异常的区别?分别怎么捕获?
50、数组是不是对象?(是,有属性有方法)
51、length属性和length()方法的区别?(数组的,String的)
52、值传递和引用传递的区别
53、break、continue以及return的区别
54、final、finally,finalize的区别
55、final、static、volitale的作用
56、面向对象思想的理解,有什么优点
57、this和super的区别?
58、程序初始化顺序
59、一个java文件中是否可以定义多个类
60、什么是构造函数,有什么特点
61、clone方法的作用
62、java IO流的实现机制是什么?NIO是什么?AIO,BIO
63、java三大器:过滤器(过滤url,关注web请求)和拦截器生效时间(关注方法调用,生效在controller方法中,实现handleintercepter接口,prehandle–posthandle–aftercompletion),如果俩个线程,拦截器pre ,posthandle执行顺序(a pre,b pre,b post,a post)
64、arrayList、linkedList和vector的区别,实现方式,是类还是接口(extends abstract implent List)
65、hashset,treeSet 的区别,以及set和list的区别,各自实现方式

高并发

1、java.util.concurrent并发包
2、lock可重入锁
3、voliate作用,特点
4、分布式应用如何保证一致性
5、aqs, cas原理,有什么缺陷,如何解决?
6、线程池原理,状态翻转,线程池的种类,区别和使用场景?线程池的实现原理和线程的调度过程?线程池如何调优,线程池最大数目如何配置(cpu核心数*2)?线程池种类,有哪些参数,队列,拒绝策略,以及执行流程
7、线程变量
8、线程安全是怎么实现的
9、乐观锁和悲观锁的区别
10、死锁的原因,如何检测死锁?怎么预防死锁?
11、如何创建一个线程,如何实现多线程?为什么要使用多线程?
12、如何应对高并发
13、Java中都有哪些锁,区别,原理是什么,CAS,AQS原理
14、threadlocal使用场景及注意事项,原理,用的时候需要注意什么
15、怎么实现所有线程在等待某个事件的发生才会去执行?
16、synchronized 和lock 有什么区别?
17、如何保证多线程下i++ 结果正确?
18、run()方法和start()方法有什么区别?
19、终止线程的方法有哪些?(stop、suspend(),线程执行完run()方法自行结束(推荐),)
20、分布式锁:基于数据库分布式锁,基于Redis,基于zookeeper三种,实现原理,基于redis的和基于zookeeper的那个性能好,为什么?
21、a=0,俩个线程,执行a++ 100次,结果是什么(2-200范围值)?加锁加什么?Volatile?(它可以保证数据一致性,但是保证不了原子性,a++是由三步操作执行的,它虽然保证了内存可见性,但是保证不了原子性,所以不行),那你怎么解决?(用java concurrent包下的automic原子类,比如automicInteger,和我们使用的数据类型一样,但是保证了原子性)?你知道他为什么可以保证原子性吗?怎么实现的(volatile+cas)
22、闭锁(延迟线程的进度,确保某些活动在别的任务执行完后才执行)及代码实现(countdownLatch对象,countdown做自减。await方法等到计数器达到0时在执行)

其他

1、tomcat底层原理,架构,server.xml的connector和context配,如何配置静态资源(context)
2、tomcat的类加载器是什么
3、对技术框架spring,nginx原理的理解,自己的思考
4、负载均衡是什么?实现方式有哪些?nginx负载均衡原理,流量控制?Spring cloud如何实现负载均衡(feign,ribbon)
5、如何防止sql注入(MyBaitis中##和$$符号的区别
6、都使用过哪些框架、平台
7、设计模式,直接写伪代码
8、Nio原理,常用nio框架,netty
9、如何同时实现充值系统的秒杀加反利的功能
10、如何实现负载均衡,有哪些算法可以实现?
11、J2EE开发有哪些调优的方法?
12、限流实现原理(计数器。令牌统,漏tong)
13.springboot启动原理(@springbootAplication,@configuration,@CompoentScan)
14、tomcat 默认并发数150,配置请求的方式
15、提升springboot吞吐量:(1)undertow替换tomcat(高并发下性能和内存方面都优于tomcat),(2)加缓存(3)异步(4)业务拆分(5)消息队列

缓存

1、redis ,get key的实现原理
2、redis 和memcached 的不同,为什么memcached 不能用于分布式锁.
3、缓存框架-Ehcache(Ehcache和redis都是用来缓存的,他们分别在什么时候使用。)
4、Redis用过哪些数据数据,以及Redis底层怎么实现
5、Redis缓存穿透,缓存雪崩
6、如何使用Redis来实现分布式锁
7、Redis的并发竞争问题如何解决
8、Redis持久化的几种方式,优缺点是什么,怎么实现的
9、Redis的缓存失效策略
10、Redis集群,高可用,原理
11、Redis缓存分片
12、Redis的数据淘汰策略
13、redis 100w数据如何保持热点数据20000条?(计算20000数据大约占用的内存,设置redis内存大小,根据6种淘汰策略淘汰)
14、redis五种数据类型?分页用哪种(zset)?
15、redis为什么快?(基于内存,单线程,多路复用IO模型,数据结构简单)
16、mybatis缓存:二级缓存(application级别,namespace),一级缓存(sqlsession级别,默认开启)

消息队列

1、kafka 性能和原理,和其他mq 比较优缺点
2、.kafka和rabbitMQ区别
3、消息中间件如何解决消息丢失问题

spring

1、Spring 相关,spring传播事物
2、springbatch是否支持任务分发
3、为什么用spring不直接用java
4、required_new怎么实现的
5、spring里的transactional注解怎么实现事务的
6、BeanFactory 和FactoryBean?
7、Spring IOC 的理解,其初始化过程?
8、BeanFactory 和ApplicationContext?
9、Spring Bean 的生命周期,如何被管理的?
10、Spring Bean 的加载过程是怎样的?
11、如果要你实现Spring AOP,请问怎么实现?运用场景(日志)
12、如果要你实现Spring IOC,你会注意哪些问题?
13、Spring 是如何管理事务的,事务管理机制?
14、Spring 的不同事务传播行为有哪些,干什么用的?
15、Spring 中用到了那些设计模式?

数据库

1、Oracle改为MySql后,如何应对高并发访问
2、oracle和mysql数据库支持的事务的区别,
3、mysql索引(Mysql存储引擎,索引原理),加索引要考虑哪些问题?索引失效的条件?联合索引(最左原则)失效?索引为什么快(索引会根据索引值进行分类,排序,不会引起权标搜索)?什么情况下应不建索引或少建索引?b+树算法复杂度,B+树个B树的区别
4、.淘宝的高并发如何设计,分库分区按照哪个字段
5、a转b 100元钱,数据库和伪代码的实现
6、数据库的rr,ur隔离
7、jdbc怎么开发事物。
8、数据库的读写分离
9、分库分表后,如果某一个还是超大,怎么提高效率。
10、数据库死锁和活锁。乐观锁悲观锁以及实现方式
11、如何通过jdbc访问数据库?原理是什么?JDBC处理事务采用什么方法?
12、Class.forName的作用是什么?
13、Statement,preparedStatement和CallableStatment的区别?
14、getString()方法和getObject()方法有什么区别?
15、数据库连接池的工作机制是怎样的?
16、如果数据库日志满了,会出现什么情况?(只能查询,不能写,基本废了)
17、union和union all的区别
18.什么是事务?隔离级别?你平时项目中如何控制事务(spring配置,@transcation(rollbackfor=Exception.calss))?这个注解如何回滚(@transcation(rollbackfor=Exception.calss)和手动回滚)?spring事务传播机制?
19、数据一致性解决:(1)mysql:事务;(2)redis:缓存失效期,定期更新;(3)mysql+redis:先更新数据库,再删除缓存;(4)分布式事物:可靠一致性解决方案消息队列,TCC补偿机制;最大努力通知型
19、数据库备份:create table 新表 as select * from 旧表;
select * into 新表 from 旧表
20.MySQL默认事务(可重复读),orcale默认事务(读提交)
21.B+索引与hash索引的区别?分别适用场景

算法

1、top K问题:有100万个数字,怎么从里面找出最大的10个,并说下解决方案的算法复杂度(100万数据中找出前10个最大的,并给出算法复杂度)
(1)将数据全部排序 O(nlogn)
(2)局部淘汰法:用一个容器报错前10个数字,然后将剩余数字一一与容器的最小数字对比,有大的加入,最小的删除
(3)分治法,分成十份,找出每份中最大的
(4)hash法
(5)最小堆
2、最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码;
3、重复问题:(1)10亿个正整数,只有一个数重复出现,找出;(2)a、b俩个文件,各存放50亿个url,找出ab共同的url; (3)40亿个整数,再给一个数,如何判断这个数是否在哪40亿中
解决方案:位图法
4、排序问题:一个文件中有9亿条不重复的9位整数,排序
解决方案:分治法。位图法

微服务

1、eureka(心跳30s,注册表,自我保护机制 15m 85%,节点平等,ap高可用),zookeeper注册中心原理以及区别?
2、分布式业务场景下服务幂等性,并发怎么处理的
3、分布式,分布式弱一致性的实现
4、对分布式事务的了解
5、如何设计分布式
6、微服务的设计原则的理解
7、对分布式环境下如何实现事物的最终一致性的想法(弱一致性,强一致性涉及到2PC 3PC ,帕克西算法,BASE理论等等。)
8、架构问题:双十一怎么解决高并发问题,架构方案:稳定性20百分,怎么提高到那么高的;数据库分库表怎么实现的:二份协议算范和zookeeper算法有什么联系。为什么要用这个做架构。怎么保证消息最新。自己的架构好在哪里?架构师那些最成功的的,有什么经验,对哪些最认可。
9、dubbo/zookeeper的使用情况
10、大数据量搜索的问题,给出解决问题的思路。
11、分布式,数据库web集群是怎么配的,数据库的读写分离(用来优化搜索)
12、怎么处理30W用户每天的访问量?比如咻一咻,强红斑,上亿数据量。如何对你的系统进行性能优化。
13、Dubbo的底层实现原理和机制
14、描述一个服务从发布到被消费的详细过
15、分布式系统怎么做服务治理
16、Dubbo的服务请求失败怎么处理
17、重连机制会不会造成错误
18、Zookeeper的用途,选举的原理是什么?
19、数据的垂直拆分水平拆分。
20、zookeeper原理和适用场景
21、zookeeper watch机制
22、redis/zk节点宕机如何处理
23、分布式集群下如何做到唯一序列号
24、如何做一个分布式锁
25、spring cloud(http+restful api)和dubbo的(rpc+TCP+NIO)区别
26、hystrix的实现原理,如何熔断,重启?
27、spring cloud为甚需要网关?(服务网关=路由转发+过滤器(权限,限流,监控))

JVM

1、详细jvm内存模型
2、讲讲什么情况下回出现内存溢出,内存泄漏?
3、说说Java线程栈,堆以及区别?
4、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?
5、JVM 出现fullGC 很频繁,怎么去线上排查问题?
6、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?
7、类的实例化顺序
8、JVM垃圾回收机制,何时触发MinorGC等操作
9、JVM 中一次完整的GC 流程(从ygc 到fgc)是怎样的
10、各种回收器,各自优缺点,重点CMS、G1
11、各种回收算法
12、OOM错误,stackoverflow错误,permgen space错误,OOM错误排查流程,以及优化命令
13、自己项目上的数据库调优,jvm调优,redis缓存
14、java是否存在内存泄漏的问题?什么是内存泄漏?
15、java垃圾回收机制,Jvm GC原理,常用算法
16、jvm的内存模型的理解
17、jdk 1.8的改变
17、JVM发生OOM的8 种原因、及解决办法

2020最全java面试题相关推荐

  1. 肝了一个月,整理了一万道2020年最新Java面试题,阿里offer有了

    肝了一个月的面试题终于来啦,大家开心不. 2020年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spri ...

  2. 2019史上最全java面试题题库大全800题含答案

    2019史上最全java面试题题库大全800题含答案 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中的自动装配有 ...

  3. 2019史上最全java面试题题库大全800题含答案(面试宝典)

    2019史上最全java面试题题库大全800题含答案(面试宝典) 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中 ...

  4. 2022史上最全java面试题题库大全800题含答案

    2022史上最全java面试题题库大全800题含答案 1. meta标签的作用是什么 2. ReenTrantLock可重入锁(和synchronized的区别)总结 3. Spring中的自动装配有 ...

  5. 2023史上最全Java面试题【完整版】跳槽必备,看完轻松收撕面试官

    ✨作者简介:杨 戬,博客专家.github开源作者 ✨多年工作总结:Java学习路线总结,小白逆袭Java技术总监 ✨技术交流:定期更新Java硬核干货,不定期送书活动.助你实现技术飞跃 ✨关注公众号 ...

  6. java2019 数据结构算法面试题_GitHub - sjyw/java-interview: 史上最全Java面试题汇总与解析(505道):2019最新版...

    Java 面试全解析 知识树 课程亮点 500道 Java 常见面试题 + 14万字核心知识解析 丰富的 Java 技术栈:基础和框架,线程池和锁优化,SpringBoot 和分布式消息队列,数据结构 ...

  7. 史上最全Java面试题全集(上)

    转载自 Java面试题全集(上)!(速度收藏) 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有 ...

  8. java 腾讯面试题_java腾讯面试题分享,2020年最新java面试题

    下面给大家带来的是一个2020年最新的腾讯java面试题,一起来看看腾讯java面试都会问些什么问题吧!希望下面的内容可以帮助到大家呢! 腾讯,一面,面试时长大约花费了五十分钟左右,下面是具体的面试题 ...

  9. 2019小米java面试题,2020年小米java面试题分享

    下面要给大家带来的是2020年的小米java面试题分享,主要包括了一面二面的面试题,以及面试者的一些相关回答,一起来了解一下吧. 面试题(一面) 1.谈一下数据库索引 数据库索引是为了让查询数据效率更 ...

最新文章

  1. squid服务器的代理
  2. 什么是C ++中的“-gt;”运算符?
  3. 关于xml的模糊查询问题
  4. python十九:map,filter,reduce函数
  5. c# 链接mongDB集群实战开发
  6. 小程序完整对接 pingpp支付
  7. c++ split 方法(转)
  8. the code place where the binding is converted to final value displayed in ui
  9. react组件生命周期_React组件生命周期-挂钩/方法介绍
  10. 2018数学建模国赛总结(A题/编程选手视角)
  11. 美国对特斯拉“幽灵刹车”问题展开调查 涉及41.6万辆Model 3/Y
  12. 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
  13. Ubuntu中配置虚拟专用网络***
  14. Spring中的WebAppRootListener
  15. java 凸包算法_JAVA凸包算法
  16. 秃顶之路-Day11
  17. ARC120E - 1D Party
  18. 饥荒联机版服务器搭建教程-WeGame
  19. 日常英语口语收集汇总
  20. 使用JOL工具计算Java对象的大小

热门文章

  1. 对于非计算机专业的售前人员,比较苦涩难懂的IT专业术语通俗解释。
  2. 【*加快Win7系统运行速度的12个小技巧*】
  3. 关于bdb(barkeley database)数据库的总结
  4. 建筑行业转型,这4点很重要!
  5. 康托尔的朴素集合论和罗素悖论
  6. C#导出DataTable
  7. Flask之多个应用接口
  8. “自顶向下,逐步求精”的方法
  9. java gc配置_JVM通用配置 以及GC日志说明
  10. 植物造型matlab代码,植物造型树在园林景观中怎样应用