Java 工作两年多,我面试过的题目

2021-02-07 11:56:20 +08:00
 young1lin

以下下划线是我一定没遇到过的。其他的有些遇到过,有些有可能会遇到。内容有点多,更多的在 https://github.com/young1lin/notes/blob/master/Prepare%20for%20Interview/%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E7%AE%80%E5%8D%95%E6%B1%87%E6%80%BB.md

HashSet 的底层实现说下?为什么内置 HashMap ?说下它的数据结构,为什么 loadFactor 是 0.75 ?为什么要高位参与与运算?为什么它的 size 是 2 的 n 次方?为什么默认是 16 ?讲下它的扩容机制。什么时候转红黑树,为什么要转红黑树?为什么它是线程不安全的,它的哪些方法是线程不安全的?为什么会造成死循环? 1.8 是如何解决这个问题的?它的线程安全的实现有什么? ConcurrentHashMap 和 HashTable 有什么区别?说下它 1.7 和 1.8 的实现是什么?有什么区别?为什么要这么做?为什么说 ConcurrentHashMap 是线程安全的?它的 get 操作是有锁的吗?它是强一致性的吗?它为什么是弱一致性的? ConcurrentHashMap 1.7 和 1.8 是如何扩容的?sizeCtl 参数是干什么的,讲讲变换过程?为什么要用 volatile 修饰?说说它的功能?什么是 MESI 协议? CPU 原语是什么?什么是可见性? JMM 说说是什么?为什么要有 JMM ? Happened-before 是什么?它和 synchronized 的区别是什么?锁的升级与降级说下是什么?偏向锁是什么? Mark-Wrod 说下?锁的粒度是什么?锁消除了解吗?锁会被合并吗?什么时候会发生?你刚才说了 CAS,你能说下它是什么东西吗?为什么要引入 CAS ? ABA 问题是如何解决的? AQS 了解吗?它是如何实现的? CLH 又是什么? ReentrantLock 和 synchronized 区别是什么?为什么 ReetrantLock 能实现公平锁?默认构造器是公平锁吗?为什么不是? Copy-on-Write 了解吗? Fork/Join 又是什么?什么是线程,什么是协程?你刚才说了管程?你能说下这几个到底是做什么的吗?线程池说下参数,四种内置的拒绝策略,以及它的执行流程。你用过吗?为什么要这么设置参数? I/O 密集型应用和计算密集型应用如何设置其参数?你具体的业务线程池的参数是怎么设计的?为什么?测过吗?你定制化开发过吗?线程池预留了 3 个供子类扩展的方法你知道是哪三个吗?能做什么你知道吗? ThreadLocal 是什么?它为什么会造成内存泄漏?你实际开发中用到过吗? Spring 事务用这个干什么的?什么是事务的 SavePoint ?你知道死锁吗?如何解决死锁? sleep 和 wait 的区别是什么? BIO 、NIO 、AIO 是什么?说下区别,以及如何使用?了解 Netty 吗?如何解决粘包问题? ChannelPipeline 又是什么? ByteBuf 知道吗?读写指针又是什么?它和 mina 的区别是什么?它的 Zero-Copy ?了解过 FastThreadLocal 吗?它为什么比 ThreadLocal 快?有看过其中源码吗? Netty 解决了 NIO 类库的什么问题?空轮询又是什么? RPC 又是什么?序列化和反序列化又是什么?几个核心类说下。是干什么的?

你说你了解虚拟机,你知道虚拟机的运行时数据区吗?哪些是线程共享的,哪些是线程独有的?你了解 JVM 调优吗?调优过吗?为什么要这么设置?垃圾回收算法有几种?为什么要分代收集? Young 区说说它的分布结构,为什么 Eden 区 80%?为什么大对象直接进入老年代?控制的参数是什么?一个对象如果不是大对象,怎样才能进入老年代?控制的参数是什么?什么时候会发生 OOM ?你遇到过吗?怎么解决的?为什么低版本的 JDK 要把永久代内存调大点?默认大小是多少你知道吗?什么是 Major GC,什么是 Minor GC ?什么情况下会频繁 GC ?你查看过 GC 日志吗?什么时候回收对象?引用计数和可达性分析是什么?为什么 Java 使用后者? Python 使用前者?什么是 GCRoot ?什么时候对象不可达? Java 的四种引用说下,分别用在什么场景?你知道 JDK 源码哪里有用到 WeakReference 吗?什么是 STW ?什么是 Safepoint ?类加载的过程说下,什么时候优化,以及不同的时候的主要优化是什么?解语法糖是什么时候?为什么在编译的时候解语法糖?什么是双亲委派模型?可以破坏吗?各个 ClassLoader 加载哪部分类的?你自定义过 ClassLoader 吗?你说你用过 Jstack 诊断 CPU 使用率飙升的情况,说下具体步骤? Arthas 用过吗? Class 文件格式说下,什么是魔数,Class 文件的魔数是什么? JMX 了解吗?

ACID 说下是什么。你说你优化过 SQL,怎么优化的说下。like '%xx%',like '%xx',like 'xx%' 哪种情况会用到索引?说下 MySQL 执行流程。WAL(Write-Ahead Logging) 知道吗? redo log 和 undo log 是什么,它们作用说下。你说你改过 buffer_pool_size 等参数,为什么要改它?它里面的数据结构说下是什么?为什么冷热 3:7 ? join_buffer 你说你也改了,为什么?什么是驱动表和被驱动表?如何优化?你说你建了索引,什么是蔟集索引,什么是非蔟集索引?什么是回表?什么时候会索引失效?你的二级索引什么用得多?为什么优先使用普通索引,而不是唯一索引? MySQL 会死锁吗?什么是间隙锁?它会导致什么问题? MVCC 说下是什么? 4 种事务说下是什么?哪种或者哪几种事务隔离级别能避免幻读?能避免脏读?你说你还开启了 binlog,能说说是什么吗? canal 用过吗?说说它的原理。MySQL 主从模式如何开启?你是如何优化 SQL 的?上亿级别的数据你是如何优化分页的?为什么不建议在 MySQL 中使用分区机制?为什么删了数据还是磁盘空间不变?自增主键用完了会怎么样?如何解决这个问题?自增主键什么时候是不连续的?这样做的好处是什么?为什么推荐用自增主键? B+ Tree 又是什么?如何迁移数据库?为什么不建议使用外键?在高版本的 MySQL 中 count(1) 和 count(*) 区别是什么? order by 是如何工作的?分页机制又是什么? ACL 和 RBAC 是什么? grant 之后一定要刷新吗?视图用过吗?它的作用说下。视图和表的区别说下。存储过程写过吗?存储函数和存储过程的区别说下。NoSQL 用过吗? OceanBase 了解吗? HBase 了解吗?<u>HBase 有哪些坑,你碰到过吗?什么是 RegionServer ?</u>什么时候用 NoSQL,它能取代 RDBMS 吗?你说你用过 Elasticsearch,能说下它的请求执行过程吗?它的总体架构说下。它的插件你用过吗?你们的分词策略是什么?倒排索引说下是什么。

给二叉树后序和中序遍历,写前序遍历。手写个快排。翻转一下链表。O ( 1 )找出链表有环。DFS 找出二叉树搜索树第 k 大节点。

实现一个多线程类,并用该线程类实例化 3 个线程 A,B,C ; A 线程打印字符 A,B 线程打印字符 B,C 线程打印字符 C ;启动这 3 个线程,要求启动线程的顺序为 C 线程->B 线程->A 线程,并且最后输出内容为:A B C 。禁止使用 sleep 函数。阿里应该还有各种多线程打印的问题,这个得准备。

接下来应该是更高级的算法题目,至少是 LeetCode Menium 难度的,翻转链表确实有点初级,练个半个小时就搞定了。暂时还没碰到,碰到我也挂了。

你平时是怎么学习一门新技术的?

最近有看书吗?看的什么书?能和我讲讲吗?

你为什么离职?下一家公司的期望是什么?期望薪资?

10460 次点击
所在节点    Java
83 条回复
xlui
2021-02-07 12:39:51 +08:00
这排版,绝了
young1lin
2021-02-07 13:14:08 +08:00
@xlui 这个 V2EX 格式的问题,而且算是连环的问题,不是一个一行的问。Github 上就不一样
zyzdxb
2021-02-07 13:57:16 +08:00
@young1lin github 点进去也是一样的排版啊
overthemoon
2021-02-07 14:26:41 +08:00
楼主文字排版是别有用心的,很符合八股文特征
AkideLiu
2021-02-07 14:29:52 +08:00
CS 慢慢变成文科了
yamasa
2021-02-07 14:50:38 +08:00
挺好 马克下。
aguesuka
2021-02-07 15:03:21 +08:00
楼主楼主,面试有没有遇到"markdown"怎么换行啊?
PonysDad
2021-02-07 15:06:10 +08:00
@aguesuka 哈哈哈哈哈哈
liprais
2021-02-07 15:10:54 +08:00
就 ACID 就不是一般面试官能懂的东西了
hehe12980
2021-02-07 15:51:01 +08:00
现在特么 JVM G1 默认就是最优设置, 基本不需要调参数,天天背 JVM 参数,累不累
yeqizhang
2021-02-07 15:56:20 +08:00
为什么内置 HashMap ?
reasonsyh
2021-02-07 15:57:20 +08:00
两年就问这么多了吗?
hehe12980
2021-02-07 16:01:48 +08:00
@yeqizhang HashSet 的目的就是为了放入容器的元素不重复,解决集合容器去重的问题,HashMap 的 key 刚好满足,所以 HashSet 的底层其实还是 HashMap, 只不过 value 给放入了一个固定 Object,其实这么干吧,行也行,还是写底层那一拨人偷懒了,因为 value 还是占内存的
efaun
2021-02-07 16:02:22 +08:00
@xlui #1 很符合面试夺命连环 call 的感觉了
chocovon
2021-02-07 16:03:48 +08:00
别念了,师傅,别念了
fallinlovewith
2021-02-07 16:09:20 +08:00
收手吧,up 祖,外面都是成龙。
UBcai
2021-02-07 16:12:58 +08:00
工作 2 年多,意思 1 年多都要懂这些了么?太可怕了吧
yazinnnn
2021-02-07 16:14:12 +08:00
java 怎么实现一个自定义重复规律的 hashSet?
gadsavesme
2021-02-07 16:31:06 +08:00
大概扫了一眼,都是些挺常规的八股文,平常一直都有在看的表示如果真面这些还是挺舒适的,如果平常看的不多的估计得尿遁。
jj783850915
2021-02-07 16:33:20 +08:00
经典八股文

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX