从12月底开始决心做JAVA开发,开始学习Spring相关用法,到一月末开始补起基础,现在3月头开始试试春招实习,以下是第一次面试经历。
我想找一家小公司试试水看看学的怎么样,没啥准备,结果没想到技术面有三面。一面完以为结束了,过了一天来了二面,上午二面完勉勉强强,下午三面炸了。感觉像是,打怪不小心触发了隐藏Boss卡关顶不住挂了,那种感觉。
一面
一面总体来说通话质量问题不太好···面试官基本让我自己去讲,而我掌握不牢固,逻辑表达混乱和没切中要领,比较伤
问项目,数据表是怎么设计的
答:表述的特别不好,逻辑不清···往设计范式那边说,但是还是混乱
HashMap源码
答:(那时候前天刚囫囵的学的),勉强可以
Redis限流器
答:三种限流器,到用
Redis+Lua
实现仿Guava的RateLimiter
简单说说Mysql索引,B+树和B树区别
答:MYISAM和Innodb的索引巴拉巴拉,然后B+和B就说了卫星数据,和B+树特点,和范围查找
Spring Aop
答:(那时候昨天半夜2点看到记得)动态代理,JDK方法,和Cglib方法
线程池玩过吗
答:没···(一面完第二天看了遍,关键是后天的下午5点半三面也问了,参数又忘光了··唉)
代码题:找单向链表倒数第K个节点
答:双指针法,快慢节点差距K
二面
TreeMap和跳表区别,跳表缺点
答:TreeMap没了解,说了顿跳表和缺点(更新,索引密度)
算法:求TopK,视频手写
答:桶排后 快排/堆排
Redis的AOF,DBD区别,AOF优化
答:说了点区别···AOF优化不会了
除了Redis外了解什么Nosql
答:MongoDB,问我使用场景,答按着教程用···MongoDBTemplate
Redis,缓存穿透咋办
答:布隆过滤,空值,再问布隆过滤原理,答忘了····(只有一点点印象,唉这脑子)
问了深度学习的项目业务
答:说了一遍业务,那个业务设计的还是ok的
JVM的垃圾回收,问了垃圾回收算法,追问了Java8对于永久代(其实改成了元空间)的优化
答:混乱的说了下能想起的垃圾回收,关键是没往标记-清除,标记-整理,标记-复制,分代方向答,往了老年代新生代内存划分方向答···。然后Java8的元空间不会···
Zoomkeeper
用过吗答:没····
三面(炸了)
三面其实问的不难,是我懵逼+掌握的不牢导致的崩盘,而面试官只是通过一个小漏洞去挖开来了缺陷而已。
先自我介绍,然后开始问项目
项目有哪些难点?值得自豪的点?
问限流器实现
答:三种限流器,到用
Redis+Lua
实现仿Guava的RateLimiter
测试过限流器性能没?
答:没···
看过JDK源码吗
答:看过容器相关的(设计模式还在学不敢说)
然后开始问容器,介绍
HashMap
答:(巴拉巴拉····)这里有个细节就是,我把阈值记错了,是8,记成16···,被问是否看过源码…
介绍LRU
答:说了遍运行机制,但是:
- LRU本身的算法名字,
HashMap
和双向链表
实现说成用LinkedList
的简单实现,- 还有说不出LRU的应用(
Redis
中的实现、操作系统最少使用页面置换算法),
唉,学的太浅了···
用过ORM框架吗
很失败的地方···我前面错的太多,ORM都忘了是啥了····事后才反应过来
Mybatis
和Herbenate
,糗大了···线程池玩过吗?(了解点,其实是上午二面完看的)说说参数
答:尴尬的说了两个,其他忘光了······太尴尬了
liuix
命令熟悉吗?从文件中统计字符串出现次数答:会点
awk
答:只会打印和字符替换····其实我和不会一样···没学深,使用次数也不多,迟早还的,唉能实习多久?
答:看疫情,秋招之前。
Over,面试官说我不太好,综合看看,等消息
最遗憾的点总结
- ORM概念都忘了
- LRU,看过忘了
- HashMap源码参数记错
- JVM相关的,花了4天去学JVM···结果掌握不牢固,一下就不行了
- 线程池,明明一面提过,看过点,但没深,三面又死这了