二本渣渣生,两次冲锋,十面阿里(Java 岗)感谢 HR 终于让我过了
一面(50 分左右)
============================================================================
项目相关介绍,没太大参考性~
String 为什么不可变, 处于什么考虑
String s1=“abc”, 这一语句执行后数据在 Java 中是如何存储的
String s1 = “abc”, String s2 = “ab”+“c”, 创建了几个对象
HashMap 和 ConcurrentHashMap 简单讲一下(聊了 hash、数据结构、扩容、线程安全性、不同版本比较)
红黑树、B+树
多线程如何实现对线程间共享内存的保护
Java 内存模型
volitail 如何保证可见性
了解哪些设计模式
模板方法和代理模式的比较、适用场景
有没有尝试过 JVM 调优、dump 内存
二面(30 分钟)
===========================================================================
多线程的几种实现方式介绍一下
运行时异常和一般异常的区别
HashMap、ConcurrentHashMap
HTTP、HTTPS 介绍一下
UDP、TCP 介绍一下
多态体现在哪些地方
堆排序、归并的原理
代理模式,聊了聊 JDK 代理的源码
项目相关
看过哪些项目的源码
最近在看什么技术类的书,收获。聊了聊书上的 redis 相关内容
一面中回答最不好的问题,现在怎么去解决。
笔试
=====================================================================
给 n 个字符串,格式类似 “stringA, stringB”,表示这两个字符串之间有某种关系,关系是可以传递的,最后给 m 个询问 “stringA? stringB”,让判断 stringA 是否和 stringB 有关系。也就是说,如果 a 和 b 有关系,b 和 c 有关系的话,那 a 和 c 也是有关系的。
===========================================================================
项目相关
觉得知乎哪个地方实现最复杂
知乎的关注列表在数据库层面如何实现
上面三个题 30 分钟,后续就是谈人生了
五面(20 分钟)
===========================================================================
Redis I/O 模型、数据结构
synchronized 和 lock 的比较
线程状态,状态之间的切换、生命周期
等待和阻塞的区别
TCP 如何保证消息的可靠传输
数据库的索引机制。
最左匹配,结合 B+树的实现和查询机制聊了聊
缓存雪崩
三种限流算法
交叉面(30 分钟)
============================================================================
Java 内存区域划分
ConcurrentHashmap 扩容
CAS
敏感词过滤,时间、空间复杂度(字典树->AC 自动机)
进程通信
管道和重定向的区别
OSI 模型
TCP、UDP 区别
MySQL 查询优化器的优化过程(只讲了择路和成本估算)
评论