秋招END,Java后端面经汇总
秋招结束,感谢牛客,面经汇总。
京东一面:
1、自我介绍2、讲一下项目
3、面向对象的特征,详细解释一下
4、接口和抽象类区别,怎么选用
5、线程池的参数
6、HashMap,CurrentHashMap,Hashtable,ConcurrentSkipListMap
7、JVM内存区域
8、volatile synchronized Lock
9、AQS
10、CountDownLaunch CyclicBarrier
11、事务特性
12、MVCC
13、bin-log redo-log 数据库二段提交
14、AOP,IOC
15、索引数据结构(提到了Memory的Hash索引)
16、死锁产生的必要条件,怎么避免
京东二面(技术面,挂):
1、自我介绍
2、实习经历
3、平时做啥
4、职业规划
5、可以实习吗
6、加过什么社团
7、除了技术做过别的啥
8、最成功的一件事
9、最失败的一件事
10、面前有一堵墙,没有任何工具,怎么办
11、哪里人
12、家里几个人
13、工作地点为什么是深圳
14、优点是啥
15、缺点是啥
有赞一面:
1、自我介绍
2、Java集合(问的特别多)
Colletion
List:ArrayList LinkedList CopyOnWriteArrayList
Set:HashSet TreeSet CopyOnWriteArraySet ConcurrentSkipListSet
Queue:ArrayQueue ArrayDeque 阻塞队列
Map:
HashMap WeakHashMap IdentityHashMap LinkedHashMap TreeMap Hashtable CurrentHashMap ConcurrentSkipListMap
3、JVM内存划分
4、线程的生命周期,创建线程的方法。
5、线程池参数(如果想核心线程数使用完之后也可以被回收怎么办? -- 有参数可以设置coreThreadTimeOut)
6、GC算法
7、volatile
8、双亲委派(破坏双亲委派的模型是啥)
9、事务、分离级别
10、数据库读写锁 MVCC实现原理
11、NextKey—Lock
12、聚簇索引 二级索引 回表 索引覆盖 索引下推
13、B+Tree InnoDB的B+Tree叶子节点有啥
14、AOP IOC,项目中使用AOP导致的线上问题怎么解决的
有赞二面
1、自我介绍
2、实习项目介绍
3、Dubbo的RPC和SpringCloud的Restful区别
4、项目的责任链模式
5、幂等性保障
6、分布式状态下的数据一致性场景都是怎么保证的,因为分布式可能出现很多的一致性问题,那么怎么保证尽量少的出现,以及出现了怎么应对
猫眼一面:
首先自我介绍啦,一面小姐姐超级超级好。
1、Java集合类,能讲多少讲多少。(java.util包下面的全部讲了)。
2、你刚才说的是不安全的,讲一下安全的。(java.util下面的和java.util.concurrent下面的全讲了)。
3、volitile和synchronized。
4、JVM内存划分。
5、GC算法。
6、Java对象的四种代。
7、HashMap、ConcurrentHashMap1.7和1.8的区别。
8、解决Hash冲突的方法 ---四种(链地址、再Hash、公共溢出区、开放定址法)。
9、数据库事务隔离级别。
10、索引能讲多少讲多少 --- B+Tree、Hash;(非)聚簇索引、二级索引、回表、索引下推。
11、线程和进程区别。
12、数据包发送和接收涉及的协议 --- 一口气讲了HTTP、HTTPS、DNS、TCP、UDP、NAT、VPN、BGP、RIP、OSPF、ARP。
13、SQL执行慢怎么排查 --explain,顺便提了下Mysql选错索引。
14、Linux命令用过哪些。
15、手写代码两个,二叉树中路径和为x的路径、快速幂,猫眼基本必写代码。
猫眼二面:
没有自我介绍。
1、画一下JVM的线程模型。
2、画一下实习系统的架构。
3、JDK提供的所有解决线程安全的方法。
4、讲一下实习发现的系统隐患和线上问题。
5、有时候会采用一种无锁化机制去线程同步,有哪些方案。(---我不会啊,我想,我想,我想想想。。。。。分片。排队。又提了一种奇葩方案,被认可了,哈哈哈),面试官说还有写时复制、线程绑定、ThreadLocal等。
6、JDK提供的工具,知道哪些。CPU负载高怎么定位。
7、java.util.concurrent包下都有什么类。 ---分类说,原子变量、并发数据结构、锁、线程控制相关(线程池、CountDownLaunch等)。
8、CountDownLaunch和CyclicBarrier区别。 ---前者基于AQS、后者基于Condition。具体的源码讲的挺仔细的。
9、实习用的Dubbo?对。了解吗?仅限于官网,zk呢、不了解。
10、实习项目的链路跟踪,服务治理怎么做的。 ---我确定我们没有链路跟踪。
11、注册中心知道哪些。 ---zk、eureka、SpringCloud for Alibaba中的。。。等。
12、让你去做选型,你怎么选。
13、服务拆分的标准、你会怎么去拆分。
14、介意业务吗,介意工作城市吗。
15、有时候为了性能,需要写Go介意吗。
二面真的难度不小,不过面试官超级nice。
猫眼三面:
1、哪里人。
2、考虑读研吗。
3、系统出的问题怎么解决的。
4、内部通信协议用的啥。
5、项目的TPS、QPS多少、响应速度多少。
6、工作城市、工作内容有要求吗
7、能实习吗
8、比较多和杂,记得不太清楚了。
贝壳一面:
(贝克的技术面的特点,就是网上找到答案的我不问,我就看看你有没有思维能力)
1、自我介绍
2、手撕二叉树的最长直径
3、狂怼实习经历
4、数据库索引
贝壳二面:
1、手撕句子反转
2、dubbo会吗?--不会
3、主从复制不一致怎么解决?
4、limit分页为什么慢,怎么优化
5、多线程超时抛异常怎么实现
6、手撕策略模式
7、直到JDK中的哪些设计模式?--模板方法。 讲~~~
8、选择公司的标准
GrowingIO一面:
1、自我介绍。
2、实习。
3、分布式ID,雪花算法,问得很细。。。
4、线程池怎么线程复用,怎么保证线程不死。
5、线程池MAX_VALUE为什么会OOM。new Thread在堆里面分配???
5、ThreadLocal使用要注意什么问题。---OOM。
6、为什么会OOM?---key不引用value,为什么还会OOM?---value被Node引用啊,Node被Map引用啊。
7、线程用完了不久回收了吗?为什么还会OOM?---(妈妈呀~~~我怕)
8、CAS什么时候用?
9、JVM内存划分
10、哪些可以作为GC Root结点?---四种。确定?---确定啊?
11、什么叫可重入锁?synchronized可以可以可重入吗?怎么可重入的?用synchronized写一个重入锁,怎么写。
12、new对象可能分配在哪里?Eden你知道吗?怎么晋升?担保机制怎么担保?
13、Lock和synchronized怎么选用?
14、对象什么时候会被GC啊?
15、jstack查看线程堆栈,线程都有哪些状态啊?
GrowingIO二面:
1、讲讲你看的最深入的源码? 线程池
2、HashSet的value 看的比较久了忘了,一步步推理出来的用的Object。反正我是被我自己的推理能力吓到了
3、Dubbo的理解
4、计算机网络的理解
5、负载均衡所处的位置 Nginx 推理出来4 5 7 LVS 通过NAT协议推理出来在网络层
GrowingIO三面:
1、自己做的项目
2、分布式锁,异步队列,怎么解决重复发送问题。
3、问了问实习。
4、最近在看什么书。
美团一面:
1、两个栈实现队列
2、讲实习
3、设计一个交易系统怎么设计
4、为什么Eden和Serivor比例是8:1:1
5、探讨了以下设计的系统
美团二面:
1、讲一讲实习
2、sql(没写出来)
3、思考题,男女比例
4、讲思路,最近父节点
5、手写代码,错了一个地方。。。。
6、讲一下网络收发报文的经过
7、tcp三次握手,拥堵怎么办
8、什么是大数据,对创业的理解
VIVO(Android方向)一面:
1、Java中的方法传递
2、对动态规划的理解
3、设计模式的理解,知道哪些设计模式
4、讲一下笔试题
Keep一面:
1、手写代码子序列和为target的序列
2、数据库的事务隔离级别
3、索引失效的原因
4、Spring帮我们做了什么
5、HashMap
6、JVM内存划分,声明一个变量是在哪里分配内存
7、线程池
Keep二面:
1、Keep有一亿用户,根据训练时间维护前十的Rank榜和自己的排名。
2、Keep有个推荐页面,每次返回20条数据,怎么对这20条数据过滤,保证这20条数据之前没出现过。
3、实习。
4、对Dubbo理解。
5、对Spring的理解
6、Redis中set的底层数据结构
7、字典的组成
8、讲一下读写分离,读写分离怎么做到的
微博一面(挂):
1、设计一个求99线的模块(讨论了20多分钟)
2、tcp三次握手,通信中服务器断了会怎么办?会发生什么?
3、SQL慢怎么办? --我就是问你索引的
4、有啥要问我的吗?
5、对一致性的理解
招银网络科技一面:
只有十几分钟。
1、实习
2、Redis集群怎么做的
3、数据库事务隔离级别
招银网络科技二面:
1、手写出现数组中出现次数超过一半的数
2、Redis和Mysql一致性如何保证
3、HashMap
招银网络科技三面:
1、实习
2、项目架构问题的一些探讨
小米一面(挂):
1、跨域怎么解决,只说了一种方法
2、Mysql和Redis一致性
3、CAP和BASE(没答好)
4、线程池的理解
5、网络模型
6、合并有序链表
猿辅导一面:
1、HashMap
2、synchronized Lock AQS
3、手写代码:二叉树转链表
4、手写代码:实现split函数
5、线程池的理解
6、收发网络报文涉及的协议
7、Http协议服务器是怎么解析的
猿辅导二面(挂):
1、看过哪些源码
2、讲一下Arrays.sort() (里面涉及了乱七八糟的桶排序,双轴快排,单轴快排,双插入,单插入,timesort,以前还专门写了博客,可惜忘完了)
3、讲双轴快排,基本忘完了
4、讲红黑树,n个节点最多几层(不会)
5、哪些用了AQS ReentrantLock CountDownLaunch
6、CountDownLaunch是怎么用AQS的(口述能力有问题,没讲清楚)
7、AQS的共享锁加锁和解锁的过程是怎么做的 (想了一下,记不起来了,讲讲独占锁的过程也行)
8、手写代码,数组中出现两次的所有数
萌推一面:
1、自我介绍
2、Mysql索引
3、Redis和Mysql一致性保证
4、InnoDB和MyISAM区别
5、索引的数据结构,为什么不用Hash
6、Http和Https的区别
7、ConcurrentHashMap怎么实现线程安全的
8、让你设计一个线程安全的Map怎么设计
9、写时复制技术
10、Linux中一切皆文件怎么理解
老虎一面:
1、HashMap的理解
2、手写代码,和为taget的数组的最小子序列
3、手写代码,二维数组顺时针旋转90度(没写出来)
4、手写单例,还有什么方法。
5、volatile作用。
6、synchronized作用,实现原理。
7、GCRoot是哪些对象,可以是堆里面的对象吗?为什么。
8、SpringBoot中AutoConfigure原理。
老虎二面:
1、实习
2、除了Stackoverflow之外还有什么溢出,OOM对哪里而言的
3、垃圾收集器知道哪些
4、CMS和Parrel Scavage的区别,CMS和G1的区别
5、Spring如何解决Bean依赖的
6、Map都讲了一下
7、synchronized锁膨胀过程,公平吗
8、synchronized加锁成员方法和静态方法之间有什么区别
9、ReentrantLock和synchronized的区别
10、手写每n个节点反转链表
11、手写旋转数组的旋转接点
12、nginx的负载均衡方式
13、Mysql的事务隔离级别,可重复读可以解决幻读吗
14、Redis的数据类型
15、Mysql的锁
#GrowingIO##美团##京东##猫眼##校招##Java工程师##面经#