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 工程师面试题整理的主要内容,如果未能解决你的问题,请参考以下文章
一文整理Java工程师常被问到的Spring Cloud面试题