赣州新闻网

首页 / 科技

死亡137问:面试造航母,工作拧螺丝

2020-04-14 · 赣州新闻网 · 科技

一、 java基础

1、 Queue和Stack你平时有用过么,说说你常用的方法,他们的区别在哪呢?

2、 了解java的异常吗,有什么区别,常见的异常有哪些呢?

3、g { T 3 c v C ; N 两个字面值相同的Intege. ` t H G G k ! :r,它们两个用等于号去比较,结果是true还是false?(这个题要分两/ L e U e j A部分去回答,结果K ` ! O P ` ]可能为true,也可能为false。因为有缓存)

4、 可以讲一下你常用的集合类么?他们的实现类有哪些?

5、 ArrayList、LinkedList的区别,底层的实现呢了解A h = ? E e ) Z吗,有没有什么优缺点,分别适合于什么样的场景,多线程环境下,有没有安全的list的实现类呢?

6、 其他数据结构的了解吗?LinkedHashMap、ConcuL j # w ) ` , Trren% o ]tSkipHashMap(作为: m P一个扩展,面试的时候问到- q @ j B &的不是很多,能答出来挺好,答不出来也没关系)

7、 说一说你对HashSet的理解,越详细越好V H r B r , y ( tip:底层是用hashMap实现的),treeSet有了解吗o } M U H H ! A?聊一聊?

8、 Hash{ r @ z S n + TMapE n ] U + Q % k 5的疯狂试探:

a. HashMap的底层数据结构是什么样子的

b. 了解hash冲突吗?它是如何解决hash冲突的

c. 请你简单叙述一下hashMap的put和get操作,C 4 ~ - k c / F当然,能说多细就说多细?

d. Jdk7和jdk8中对hashMap做了什么改进嘛(红黑 M 6 x T v m x $树)?

e. 有没有其他的解X P ~ ;决冲突的办法呢

f. HashMap中的hash函数了解吗?那他的扩容机制了解吗?

g. HashMap为什么扩容是2倍呢,可以说说嘛?

h. 假如说我加入一个键值对,这个时候, % ] a 9 m $ %出现了冲突,它只怎么把这个节点加入进去?是加入到当前bucket所对应的链表的头结点还是尾节点?(答不上来可以问一个稍微简单的,equals和 == 的区别,以及其中hashCode的作用)

i. 可以说说什么条件下,可以把一个链表转成) Y / Q红黑树呢?它里面的大概流程是9 : : G u t : ,什么,了解吗?

j. 有没有想l p = 1过为什么选用了红黑树,而不是其他的数据结构,譬如说二叉树,二叉查找树,或者S f n + P _ p其他的树?

k. 在高并发大流量的情况下,hashMap有什么问题吗,会不会造成cpu达到100%?如果会,那是在哪一步可能会出现这个问题呢(插r 8 G k入、删除、查找、扩容)?s a 8 y H * ^ {

9、 ConcurrentHashMap的疯狂试b P E f / t I探:

a、 他和HashTable的区别呢?

b、 说说你对JUC包的了解?

c、 ConcurreV F z # e GntHashMap中是怎么加锁的?

d、 1.70 e r 3和1.8中,ConcurrentHashMap的区别是什么?

e、 ConcurrentHashMap是怎么做到线程安全的呢?(CA$ i _ ~ ( r 7 -S和锁)

f、 为什么会抛弃分段锁,它有什么毛病吗(上面一个题回答上才可! 0 & k T以问这个)?

g、 知道红黑树的transfer过程么?简单的描述一下

10、 多线程下的疯狂试探:

a. 多` l e R线程了解吗?说说线程的生命周期?

b. 线程池有用到过k K K $吗?怎么用的,jdk有提供那些线程池(总共提供了四种)?

c. 线程的状态) u l ;有哪些呢?

d. 线程池的核心参数有哪些?(核心线程数、最大线程数、时间、时间单位、队列、拒绝策略、默认的线j ? n Z 9程工厂)

e. Waito n k m ) m,yeild,stop,sleep、join、start、run的区别和如何使用?

f. 接着上题:这四种有什么区别吗,你用过哪一种,N g # P U可能存在什么问题吗?

g. 接上题:拒l p !绝策略有哪些呢?了解吗?聊聊?

h. 接上题:你刚才说了队列,线程池中的队列有哪些?有界队列、无界队列、同步队列D 6 d H * ? G | d都有了解吗?聊聊D d N?

i. 如何实现一个消费者和生产者的循环消费和生产呢?(有两种方式,一种是通过锁,lk s o a kock或者Synchronize,还有一个是通过ArrayBlocki? Y _ T ) qngQueue实现)

j. 你可以实现线程之间的相互通信吗?如何实现?要不写一个?

死亡137问:面试造航母,工作拧螺丝

11、 线程安全的疯狂试探:

a. Synchronzie了解吗?谈谈你的理解

b. 在一J / c } 2 $个普通方法上加synr } $chronU + | p 8 t ; j Vize和在一个静态方法上加synchronize有什么U F W i -区别(对象锁和类锁的的区别)?

c. Synchronize和lock有什么区别呢?{ e $ , A h说说你对lock的理解?

d. Lock的公平和非公平锁?

e. 说一说volitaile为什么保证不了原子_ P t j l性,可以保证可见性嘛?如何保证的(jvm的多线程的内存模型有关系)

f. 了解CountDownLatch么,CyclicBarrier的区别呢?

g. SynY I 6 L M chronize的实现原理知道吗?moniter的实现机制呢,为什么加了Synchronzie关键字,就可以在多线程b H t S b +下是安全的(这个回答要从java对象的Object头来回答)

h.Y m H ) @ 类锁和对象锁的区别呢a ` X @ # ~ P O?字节码的体现呢?

i. Java中的自旋锁 p N ; K 7、偏向锁、读写锁、重锁等了解吗?

j. 了解java重对象的N R } # M对象头嘛?有哪些属性和字段呢?

k. Aqs(AbstractQueuedSynchronizer)了解吗?它和lock的关系?说说aqs中的核心思想?

l. Lock中存在锁升级嘛,他是可重入得嘛,那SynR k z w N / Dchronize是可重入得嘛,有没有锁升级的概念?

m. Volitaile了解吗?他的作用是什么呢,内存语义是什么呢?有没有了解过cpu的缓存一致性协议?

n. 还知道其他的juc类嘛,有哪些呢(譬如lockSupport)?

12、 jvm的疯狂试探:

a. 了解jvm么?jvm的内存模型?

b. Java如何判断一个对象是否还{ Q !活着呢?

c. Java的类加载了解吗?

d. Java类加载器了解吗,有哪些呢?那它的双亲委派了解吗?

e. Jvm指令你知道哪些(jps,jstack,6 g b 1 q Ijinfo,jmap……),都有什么作用呢?

f. Java的垃圾回收算呢,了解吗,G1回收算法了解吗?

g. Jvm参数你了解吗,知道多少说多1 G X l | l F k少?

h. 在实战中有进行过jvm调优嘛,怎么做的,

i. Java的对象年龄知道吗,有什么作用吗?

j. Young GC和full GC了解吗,如何触发,如果在你的项目中,频繁出现younT j 0 [ 3 Dg GC 怎么办?

13、 设计模式的疯狂试探:

a. 你了解的设计模式有哪些?

b. 可以写一个单例模式嘛,工厂模式M 0 c C e R I呢,抽象工程模式解决了什么问题?

c. 策略模式、责任链T J G c模式、适配器模式写一个,写不出来的话,java中在哪用到了这些模式

d. 代理模式了解吗,会写吗d f [ W,jdk代理$ ( D i i J |和cglib代理的区别呢,说说你的理解?

死亡137问:面试造航母,工作拧螺丝

二、 数据结构与算法

1、 排序算法了解什么?能不能手写一个快速排序、或者归并排序,堆排序有了解q w C p * 5吗?

2、 给你一个: 7 7一元二次方程公式,你写一个方法,用计算机语言实现它。

3、 图了解么,有向图呢?你可以实现一个有向图么?(C - p y d P @ x假如` p R )他回答的是二维矩阵,可以反问他有没有更好的解决方案呢,因为这个图可能是个稀疏矩阵)

4、 接上题,在图中5 T y Y,如何判断两个节点的Y ( F : 5 S ^ !联通性,可以写代码写出来么?

5、 给你一个1T的Int文件,然后你只有一台内存是8G的机器,如何用最快的方法,求出里面出现频率最高的topN个数?

6、 算法的时间复杂度和空间复杂度了解吗?说说J & 7 E e K j b你了解的算法的时间复杂度和空间} [ @ % L 5 { !复杂度。

7、 二叉树了解吗,树的广度优先算法和宽度优先算法了解吗?写一个他的前序(中序[ k 5 g @ / 2 C、后序)遍历可以么(递归和非递归的方式都可以写出来么)?

8、 给你一个字符串,请检查中间出现的括号的正确性,譬如:({}),((()))这都是个合D ( - X q v法的字符串,(()())((()这就不是一个合法的字符串;

9、 给你一个单向链表,检测它有没有形成环?

10、 给你一个单向链表,如何反转,可不可以把空间复杂度降低到O(1)级别?

11、 写一个字符串匹配算法,判断在一个字符串中是否包含另外一个字符串(一般都会说循环去比较,这样的时间复杂度很高,有一个W I a a ; p H算法是KMP,面试者1 h 1 j | Y g ] Q要是能提到KMP都就很不错了,因为很多面试官都不知道,也不会)?

12、 可以用两个栈模拟一个队列么?

13、 如何判断两棵树相不相等

14、 动态规划有了解吗?

a. 给你一个机器人,它每次只能向右或者向下走一步,其中,中间有一个障碍物,不可以经过,请问,在一个n*m的矩] l T % M d 1 R阵中,这个机器人总共有多少种走的方法?(答不出来就降低一下难度,把中间的那个障碍物去掉)

b. 青蛙跳知道吗?给你一个数组,里面的每一个数字代表青蛙可以前进的最大的步数,- & + F y @如何判断这个w h 6 * 4 @ 9 r青蛙可不可以达到终点;譬如2,3,4,1就可以,1,2,1,0,1就不可以;

c. 爬楼梯,假设有一个n阶的楼梯,你每次都只能爬1或者O 8 r 8 x & 1 i2个台阶,请问有多少种不? ! T h B / A Q +同的方法可以爬u D V上去呢?

d. 给你一个整数数组,找到一个具有最大和的连续子数组(子数组至少包含一个元素),返回最大值

e. 给你一个容量为V的背包,现在有N件商品(有重复,相同的商品可以随意取l - %),每件商- l ; % S $ v *品的体积是v1,价Y C F R N U } I 3值是w1,请问,这个背包所能容纳的最大价值是多少?

f. 一O 8 `个100层高的楼,有两颗鸡蛋,你需要用最少的次数找到那个临界点,这个临界点以上的楼层上摔下去,鸡蛋都会碎掉,以下的楼| S ` 1 p V z D v层,鸡蛋是不会碎的,(扩展,加入现在是N层高的楼房,你现在有m个鸡蛋,m>=1,用最少的次数找到那个临界点)

死亡137问:面试造航母,工作拧螺丝

三、 数据库大汇总

1、 用过mysql嘛?了解吗?

2、 Mysql事务了解吗,隔离级别呢,每种隔离级别会出现什么问题?

3、 Mysql的锁O ( } ?了解吗(表锁、行锁、间隙锁,读写锁)?

4、 Mysql引擎知道吗,innodb和myiu { m M j # -sam的区别知道吗,0 M 3 E说说底层的实现?

5、 聚簇索引和非聚簇索引知道么,有什么区别?

6、 B+树知道吗?为什么使用B+树?

7、 分库分表做过吗,如果让你去实现分库分表,你g 8 ; = e a ^ G有什么需要考虑或者注意的嘛?

8、 了Z T )解死锁嘛?知道他是怎么产生的嘛,如何避免呢?

9、 Sql优化了解{ H K H G i过吗?说说你的理解,给你一条sql,你会怎A j } , U么优化?


四、 框架


1、 redis大家庭:

a. redis是什么,能干嘛,怎么用J G x T?

b. Redis的基础数据类型x 2 v 1 f - V有哪些?

c. Reids除了这些,$ + 8还有哪些数据结构,能解决什么问题?

d. Redis集群有搭建过么,说说你的实现

e. Redis如何实现分布式锁

f. Redis的支持事务么?

g. 位图了解吗?

h. 布隆过滤器了解吗,他. 9 L 0 X X R的原理是什么呢?

i. Redis的通信协议你知道嘛?

j. Redis中的数据结构底层了1 9 5 2 J x /解吗?string的编码、list的编码、zset的编码;

k. 在集群环境下,Redis的分布式锁一定可靠吗,redis社区有没有提供可靠地分布式锁的集群方案(有,红锁)?

l. Redis的持久化你知道么,说说rdb和aof的区别

m. Aof瘦身知道么?如何瘦Q y K D N } :身

n. Redis的拒绝策略你知道么?那它的淘汰策略你知道么

o. Redis的哨兵模式呢,了解吗?

p. Zookeeper了解吗,用zookeeper实现分布式锁,和redis实现有什么不同呢,说说他们的原理?

2、 Spring大家庭:

a. Autowire和Resource 的区别

b. 谈谈你对spring的理解,它干了什么?

c. Spring的依赖注入和切面呢?

d. Spring的事务了解吗,他的传播机制呢

e. Spring的aop切面详细说说,你的应用场景呢?

f. Springmvc用过吗?了解他 I m , @ p的启动流程B R 2 R P W ! v )嘛?说说你的看法

g. SF O 5 Q u - $ y %pring中的bean的生命周期呢,了解吗?如何扩展一个bean的生命周期?

h. Spring源码读过吗?有没有想过他是如何解析在xml中定义的bean的。

i. 在q m Lspring的配置文件中加入component-scan标签,它就可以自动加载所有添加相应注解的java类,这个是怎么做@ c g Q 9 5到的呢,你知道嘛?

j.0 & G W [ E | # c Dubbo了解吗?dubbo是怎么和spring想结合的?; % 6 % / : s N 4

3、 消息中y N 0 j E : 6 t间件大家庭:

a. 你了解消息中间件有哪些?

b. 谈谈你对topic和partition的理解?

c. K$ [ b 2 ; Z = 6 dafka中的isr和osr有了解吗?

d. Kafka的高水位你知道^ F k嘛?

e. Kafka的分区器、拦截器、序列化器你了解吗?

f. 消息的可靠性怎么保证?

g. 消息丢失怎么办?kafka有什么保证策略?(我了解kafka,你们也可以问问其他的,譬如rocketMq)

h.G C ` M 9 E V h Kafka的事务你了解过吗(这个特别难,一般别问昂)?

4、 zookeeper大家庭:

a. 谈谈你对zookeepem i : S Rr的理解?

b. Zookeeper的节点类型你知道么?

c. Zookeeper的心跳J V R + I机制呢?{ ; W N E d C u ?

d. Zookeeper的优势在哪?

e. 知道zookeeper的watch嘛?

f. Cap理论知道吗S T p ^ [ [ & ~ )?

g. Paxos算法呢,了解吗?

5、 springBoot大家庭:| & 9 q u 2 g t

a. 什么是spring boot?

b. 为什么要用sprin_ + rg boot呢?

c. Spring boot 的核心配置文件有哪几个?他们的区别是什么?

d. Spring bo/ 4 ` 4 ? h ) sot 的配置文件有哪几种格式?区别?

e. Spring boot的核心注解是那个?它主要由哪几个注解组成的^ : u?如何理解spring boot的配置加载顺序?

项目设有隔离工作工厂频率死亡龙南本地新闻