Java 工程师面试题整理

Posted wbxk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 工程师面试题整理相关的知识,希望对你有一定的参考价值。

根据自己收集的还有一部分自己面试的整理出来,希望能帮到面试的兄弟(2019年)。

用友网络

1、你们用微服务有什么好处呢?

2、微服务之间的事务是怎么处理的?怎么回滚?

3、MQ用的什么?MQ的事务是怎么做的?

4、Object里面有什么方法?这些方法什么时候需要用到?equals方法和hashCode需要一起重写吗?

5、怎么删除一个list里面的奇数。list里面有十个整数。

6、Java的IO有没有了解?包里都有些什么内容?

7、Java的类加载过程是什么样的?

8、怎么在Object类中添加方法?能做到吗?

9、Spring框架怎么实现的有没有了解?bean的加载过程,IOC和AOP的底层?

10、Spring里面怎么使用一个事务?事务的传播特性有哪些?比如一个事务方法里面想起个新的事务该怎么写?

11、编码过程中用到哪些设计模式?怎么使用的?适配器和装饰者有什么本质的区别吗?

中兴金融(外包)

外包到中信银行

1、Redis你们有几台?多大内存的?Redis集群的最大容量是多少?

2、ES+Redis的整合操作是怎么做的?这样做不会有Redis内存不够的问题吗?

3、商品数据是常驻Redis吗?还是有什么策略?

4、一个商品的搜索标签是怎么做的?

5、分布式锁你们怎么实现的?

6、网站数据有多少?日活大约多少?

北京博睿宏远

笔试:

1、队列、栈的各自特点是什么?

2、final、final、finalize的区别?

3、HashMap、HashTable、ConcurrentHashMap的区别?

4、ArrayList和Vector的却区别?

5、实现将一个十进制数字字符串转换为十六进制数字字符串,如“155”输出“0x9B”。要求不得使用任何第三方提供的字符串和数字转换方法,如C语言的atoi,Java的String.parseInt等等。

6、设计一个简易的链表类,SimpleList,要求给出如:构造(SimpleList)、读取(get)、插入(insert)、删除(earse)等基本方法的定义,鼓励使用模板(C++)或泛型(Java),只要求写出声明,不要求实现,请写上必要注释。

7、随机给出两个超大整数,实现计算两数之乘积,如“111111111111111”和“222222222222222”,输出乘积“24691358024691308641975308642”,要求不使用Java中的BigInteger等类。

一面:

1、什么时候会产生跨域?域名相同端口号不同会涉及跨域吗?

2、解决跨域的几种方式?spring的跨域注解是怎么实现跨域的?

3、DNS起什么作用?

4、==和equals有什么区别?new两个Integer对象,这两个值相同,他们是==的吗?

5、对象之间能使用大于小于号比较吗?

6、Java里的long类型转int类型会有什么问题?

7、说一下集合的继承关系?

8、ArrayList和HashSet哪个遍历速度快?查找“abc”这个字符串是否在这个集合里,哪个快?

9、HashSet能放null吗?.size方法和.isEmpty方法用过吗?放null的话,size和isEmpty会返回什么?

10、100个new好的对象,分别往ArrayList和HashMap里放一份,这时候JVM占用的内存大小会翻倍吗?

11、有几种方式创建线程?A线程怎么和B线程通信,如果是A进程和B进程呢?不引入额外的配置(redis和Mq之类的)怎么通信?接口能做到吗?Rpc调用写过吗?Http调用能做到吗?写过Socket通信吗?

12、socket能做什么事情?

13、做一个聊天软件,你会选择什么协议来做?可以使用Http做吗?会有什么问题?

14、Http可以做到长连接吗?长连接和短连接的概念是啥?客户端给服务器发了个请求,服务端能在任何时候给你返回信息吗?Http的存活周期是多久?

15、Session的生命周期是什么?

16、给你一个static的HashMap对象,同时开100个线程往里面put线程ID,最终能拿到预期的100个线程ID吗?

17、Java里有那几个锁关键字,什么叫死锁?

18、什么时候能用到递归?递归写法有什么风险?

19、碰到过内存泄漏吗?什么情况会内存溢出?一般内存溢出怎么解决?线上服务器内存溢出怎么处理?有什么工具能监控?怎么去分析?

20、你们的服务器是什么配置?线上服务配置了解吗?

21、mysql里面有几种join?full join MySql支持吗?

22、MySQL有几种数据类型?都是什么?自增序列用的什么类型?int的长度是多少?

23、MySQL的索引什么情况下会失效?常见的有哪些情况?

24、一个表有两个字段,一个id还有一个phone,这个phone字段我用的nt类型,有索引,如果写SQL的时候写成字符串类型加了引号还会不会走索引,

比如写成select * from table where phone = ‘12345678’;

25、MysQL有这条记录的时候更新,没这条记录的时候插入,这种SQL怎么写?Oracle可以实现吗?

26、MysQL的函数和存储过程写过吗?

二面:

1、数据库分片你们怎么选型的?为什么选的shardingjdbc?

2、ActiveMQ你们是怎么用的?你觉得还有什么场景能用得到?

3、分布式事务和数据一致性了解过吗?怎么实现一个分布式事务?

4、JVM调优做过吗?比如有一个服务经常进行Full GC,该怎么调优?经常报内存溢出的话怎么处理?怎么监控虚拟机的运行呢?

5、Redis的雪崩怎么解决?缓存穿透呢?

6、Redis集群有做过吗?主从同步是怎么同步的?主库有变动怎么同步到从库?

7、数据库索引的存储结构是什么?B+Tree和B-Tree的区别是什么?

8、为什么说B+Tree这个结构能对查询加速?全表扫描是怎么做的?走索引是怎么做的?

9、如果一个表的索引过多会出现什么问题?

10、单点登录是怎么做的?

11、浅复制和深复制有什么区别?

12、写一个name分组统计平局分数的SQL。

三面:

1、C++和Java有什么区别?

2、session共享有几种方式?

3、服务间数据怎么共享的?

4、Redis的数据怎么和数据库中的数据同步?

5、你觉得项目的技术难点在哪?

6、做过JVM调优吗?

7、测试环境有压测吗?怎么判断压测结果满足要求?有没有压爆,就是说压到阈值。

铁甲网

1、给你一个字符串“abcabccba”,写一个方法判断出哪个字符最早出现三次?

2、Redis里的RDB和AOF有什么区别?RDB和AOF文件越来越大怎么处理?

3、AOF重写的时候Redis会暂停吗?

4、你们Redis里面都存储写什么数据?什么样操作会导致缓存数据更新?

5、你们并发大吗?你觉得需要用到缓存吗?

6、怎么保持数据库的数据和Redis的数据一致?什么场景会造成数据不一致,怎么处理?

7、MQ怎么保证不重复消费?消息ID是怎么生成的?

8、唯一ID生成方式有几种,zookeep怎么实现自增ID?

9、接口的安全性是怎么保证的?token验证是怎么做的?

10、代码版本管理用的什么?SVN的分支模型是什么?

11、Mysql怎么解决幻读?

12、手写一个SQL:a表有ID 12345,b表中有ID 45678,怎么查出123?

必要商城

之前还有一个电话面试,没录音也就没写。主要是问了Redis和MQ的内容。

一面:

1、说一下你们项目的架构。你主要在里面做什么?

2、做系统的工作中遇到什么问题?

3、针对高并发场景都做过哪些优化和处理?

4、什么样的数据适合做缓存?你们的什么数据做了缓存?过期时间怎么定的?

5、hash获取其中一个key的命令是什么,写一下。

6、写一个Redis实现分布式锁的伪代码。

7、ES结合Redis怎么实现的商品搜索?为什么不直接通过ES检索出整个商品的信息呢?

8、服务A发起下单请求服务B,服务B请求服务C扣减库存,假如b调c超时(c不一定执行失败),怎么处理?

9、SQL优化都有哪些?

10、写一个订单查询SQL。

11、用户量有多少?每天UV多少?

12、Integer a = 12;integer b = 12;a==b?==和equals有什么区别?

13、HashMap的底层实现?

二面:

1、说一下springAOP,两种动态代理有啥区别?本质区别是什么?哪些模块用到了?

2、具体说说你们分布式锁是怎么用的?

3、平时用过什么设计模式?懒汉和饿汉区别?抽象工厂和工厂方法有什么区别?

4、JVM调化有接触过吗?怎么调优?

传智播客

导师需要经常出差。导师面试相对简单,主要是考察讲课能力,会让你回去录一个讲课视频。

导师面试:

1、jenkins和k8s

2、shardingjdbc和mycat的区别

3、Redis的雪崩和穿透

4、缓存预热怎么做的?

5、springtask和quartz有什么区别?

6、分布式事务是怎么解决的?

7、服务监控这边是怎么做的?

8、doubble和springcloud的区别?

9、springboot的特点,怎么实现的?

10、权限认证框架是怎么使用的?

11、报表做过吗?poi导出文件。

开发面试:

1、Object类下有哪些常用的方法?

2、equals和hashcode覆盖(重写)的时候一般遵循什么原则?

3、equals方法重写的步骤?一定要重写hashcode吗?

4、wait、notify、notifyAll用在什么场景?

5、集合类都知道哪些?List和Set有什么区别?

6、什么时候用TreeSet?什么时候用HashSet?自定义对象放入TreeSet需要重写equals吗?放入HashSet呢?

7、TreeSet是怎么保证可排序的?比较器的两种方式怎么写的?

8、HashSet内部是怎么使用equals和hashcode方法的。

9、ArrayList和LinkedList有什么区别?

10、Map里put键值对怎么保证线程安全?HashMap是线程安全的吗?

11、ConcurrentHashMap性能比HashMap低吗?

12、Java中IO的类继承体系?什么时候用inputStream什么时候用Reader?

13、写一个代码,实现将D:\test.txt文件复制到E盘根目录下。

14、文件上传的一些注意事项?表单的类型需要写什么?不配的话默认是什么?

15、SpringMVC文件上传的流里面怎么获取文件大小?目录不指定的话文件流会被写到哪里?

16、Java中的异常体系时怎么样的?

17、受查异常和非受查异常有啥区别?异常转换,怎么把一个受查异常转换为一个非受查异常?并且抛出的时候还能带上受查异常的信息?

18、Http协议属于什么层的?Http协议栈分几层?

19、Http默认端口?Https的默认端口?两者的区别?SSL在哪一层?HTTP和tcp之间。

20、Http的请求和响应的报文结构是怎么样的?

21、Http常见请求头有哪些?

22、Spring的IOC和AOP分别说下?

23、Spring的AOP是怎么实现的?JDK和CGlib的动态代理的区别?

24、springboot中Tomcat怎么修改端口号?在哪个文件中,在哪个位置?

25、yeml和propertion文件区别是啥?注意yeml的空格。

26、springboot中propertion的自定义属性怎么获取?几种获取方式?

27、springboot的启动类上加的注解是啥?

28、你是怎么新建一个springboot项目的?

29、springboot和MyBatis怎么整合的?spring呢?

30、MyBatis的分页思路?

31、MyBatis的接口是怎么实现的接口?Mapper层怎么实现接口调用SQL的?JDK的动态代理。

58同城

部门:商业智服中心

一面:

1、你们的唯一主键是怎么做的?uuid怎么保证唯一性的?

2、商品数据怎么和ES同步的?ES有几台服务器?怎么增删ES服务器。

3、单设备登录怎么实现的?

4、写一个双检锁的单例。这里添加volatile有啥作用?这里能锁this吗?

5、sychronized底层原理?

6、比如618订单量突然很大,有什么措施吗?

7、怎么实现一个长连接?

8、怎么过滤请求?

二面:

1、Synchronized加锁流程?底层怎么实现的?

2、负载均衡的几种方式?

3、怎么实现一个随机数算法?不用Java提供的。

4、线程的生命周期,线程启动两次会怎么样?

5、一条SQL执行慢的原因,怎么解决。SQL条件写法有问题,可能有隐式转换,没走索引。
varchar字段传了int,int字段传了字符串都会走索引吗?

6、linux脚本写过吗?那个头部什么意思?写一个判断目录存不存在的脚本。

7、MQ的作用有哪些?

8、ES为啥还要调Redis,它本身不就能存数据吗,直接查出来就好了?

9、实现一个单向链表的数据结构。实现链表反转。

大象慧云

这个公司就基本问了两个问题就说今天就到这了,面试官一般吧。感觉就是应付的。浪费面试者时间。

1、springboot的注解有哪些是spring没有的?

2、JVM调优做过吗,怎么做的?

Udesk

一面:

1、怎么理解JDK1.8新增的拉姆达,Stream?

2、没有拉姆达之前也有传递方法的方式,用匿名内部类访问外部的变量的时候,变量必须是final的,为什么?

3、泛型的擦除是什么?JVM在后边运行的时候会有问题吗?因为不知道运行的是什么类型了。比如JVM怎么知道List里面装的是什么?

4、线程都有哪些状态?什么时候进入阻塞和超时等待?sleep会进行什么状态?

5、sleep和wait的时候会抛出一个异常,是什么异常?为什么会抛出这个异常?调用interrupt()一定会产生这个异常吗?

6、都了解过哪些锁?

7、说下HashMap的结构。有哪些比较重要的属性?加载因子怎么影响HashMap的效率的?扩容因子大了会怎么样?

8、ConcurrentHashMap是什么结构,怎么保证线程安全的?哪些操作会体现出线程安全?为什么说HashMap是线程不安全的(哪一步体现的)?

9、工作中用过哪些设计模式?代理和适配器有什么区别?

10、Spring里面AOP的代理对象是什么时候生成的?在Spring启动过程中那个环节有机会绕过代理对象访问原对象?

11、Spring里面的BeanPostProxy知道吗?

12、Spring的IOC中的BeanFactory和FactoryBean有啥区别?

13、用过ThreadLocal吗?如果原线程里启动了一个异步线程,而异步线程也需要用到原线程ThreadLocal中的内容,怎么办?

14、同步阻塞和同步非阻塞?异步阻塞和异步非阻塞?

15、用过什么连接池?springboot默认的连接池?

16、分库分表你们怎么做的?按月分表怎么查历史数据?

17、MySQL的索引实现方式?

18、怎么让SQL查询不按照默认的索引方式?会比MySQL的默认索引效率高吗?(有null的列)

19、用户表id,name,city,查出用户最多的城市?

20、OAuth2.0的认证流程?怎么保证发令牌的过程是安全的?怎么保证对方是一个合法的用户。怎么防止伪装客户端攻击?

21、你们的微服务监控怎么做的?

二面:

1、自己怎么实现一个String类?String怎么存储的?

2、ConcurrentHashMap的put操作是一个什么样的过程?

3、CAS的ABA问题怎么解决?

4、怎么判断一个字符串是否是IP地址的格式?不用Java提供的方法。

5、Redis集群方案了解过吗?

6、数据分片了解过吗?一致性Hash知道吗?什么数据结构适合实现一致性Hash?顺时针查找数据,怎么实现?

杭州三汇

主要是做公安大数据的,驻场开发,北京人员少,只有5个人,并且开发场地没有网络。

面试者是个做数据的,根本不懂Java,所以也就做了份笔试题就出来了,这种的纯粹浪费时间。

笔试题:

1、ArrayList和HashSet的区别?HashMap、HashTable、ConcurrentHashMap的区别?

2、运行时异常和一般异常有何异同?

3、说出ArrayList、Vector、LinkedList的存储性能和特性?

4、JSP中动态incloud和静态incloud的区别?

5、Maven中对于依赖的设置,scope的取值为runtime和provided有何区别?默认取值是什么?

6、一个类需要设计为只能被同一个包下的类访问,应该用哪个修饰符?

7、Tomcat中,什么是DefaultServlet?它的功能是什么?

8、一条考察group by 和 union all 的SQL。

9、请说下模板模式与策略模式的异同点。

10、锁机制有什么用,简述悲观锁和乐观锁机制?

以上是关于Java 工程师面试题整理的主要内容,如果未能解决你的问题,请参考以下文章

前端工程师面试题?vue2知识整理?

MySQL最全整理!高级java开发工程师面试题

Java笔试面试题整理第一波

一文整理Java工程师常被问到的Spring Cloud面试题

整理最全的Android开发工程师面试题,面试题详解。javaAndroid程序员

四年Java面试遇到的问题整理,Java面试题汇总