我面试过别人,也被别人面试过。二者都让我获益良多!
今年受疫情影响,金三银四基本变成了很多公司裁员节流的开始,一整年都十分沉寂。明年金三银四是许多业内人士公认的人才流动触底反弹的时间,如果你准备在这段时间面试跳槽,将会有不菲的收获。下面来分享一下我今年阿里Java面试的经验,希望你能从中得到收获。
面试对象
面试官的时候
比如我面试别人我喜欢问项目中他用到了哪些,然后针对用到的技术去问一些问题,或者说对于某些场景的一些技术实现方案是我特别喜欢问的,比如当你的接口服务数据被人截包了,你如何防止数据恶意提交? 相对来说,Java的底层和基础会问的少一点,当然问的少不是代表不问,而是说侧重点在于你的所做过的项目和你的设计思路如何。当然,懂基础和底层更好,这样能让你知其然,更知其所以然,写出来的代码和程序更具有健壮性和可维护性。所以说,基础还是很重要的。
被面试的时候
自己出去面试,怎么说呢,其实还是挺紧张的,原以为自己不会因此紧张或者焦虑,实际上,还是有的,在没找到合适的工作的时候,甚至晚上有点睡不着觉,总觉着有什么事压在心头,睡觉都不安心。既然睡不着,那还是看看资料吧,我有个习惯,睡前看点问题,第二天早上就能想到答案,睡前记点资料,第二天早上就能记得特别深刻。
废话不多说,直接和大家分享下阿里Java面试的经验吧。
面试技巧
先简单说三点面试技巧:
1、背熟你的简历
原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目、技术都无法描述清楚的话,我想没有哪家公司会接受这样的,哪怕你是超级人才,你自我表述不行,估计也会为此头疼。
2、深入了解并熟记部分Java基础知识
原因:大部分公司无论面试初级还是高级,无论是笔试还是面试,都会问到一系列基础题,这些基础题大概涵括jvm、字符串、集合、线程等等,如果说每一个让你死记硬揹你肯定记不住,那么就是理解中记忆了,拿JVM来说 ,如果让你谈谈你对JVM的理解, 那么你首先得知道JVM有哪些结构组成,每个结构用来做什么的,然后考虑一个Java对象从创建到回收,如何途径JVM这些结构的。
3、保持自信心和沉重冷静的心态
原因:面试过程中,自信是少不了的,相信你可以, 面试的路上可以自己对自己说一句: I belive I can ! 反正我就是这么做的,自我的心里暗示吧,其实面对面试官的时候,你自信的状态也会让面试官觉得你是个很有底气的人,至少从感觉上会给你打个高分。
面试真题
一面
自我介绍
map怎么实现hashcode和equals,为什么重写equals必须重写hashcode
使用过concurrent包下的哪些类,使用场景等等。
concurrentHashMap怎么实现?concurrenthashmap在1.8和1.7里面有什么区别
CountDownLatch、LinkedHashMap、AQS实现原理
线程池有哪些RejectedExecutionHandler,分别对应的使用场景
多线程的锁?怎么优化的?偏向锁、轻量级锁、重量级锁?
组合索引?B+树如何存储的?
为什么缓存更新策略是先更新数据库后删除缓存
OOM说一下?怎么排查?哪些会导致OOM?
OSI七层结构,每层结构都是干什么的?
java的线程安全queue需要注意的点
死锁的原因,如何避免
二面
jvm虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题
数据库索引有哪些?底层怎么实现的?数据库怎么优化?
数据库的事务,四个性质说一下,分别有什么用,怎么实现的?
服务器如何负载均衡,有哪些算法,哪个比较好,一致性哈希原理,怎么避免DDOS攻击请求打到少数机器
volatile讲讲
哪些设计模式?装饰器、代理讲讲?
redis集群会吗?
mysql存储引擎
事务隔离级别
不可重复度和幻读,怎么避免,底层怎么实现(行锁表锁)
三面
项目介绍
分布式锁是怎么实现的
MySQL有哪几种join方式,底层原理是什么
Redis有哪些数据结构?底层的编码有哪些?有序链表采用了哪些不同的编码?
Redis扩容,失效key清理策略
Redis的持久化怎么做,aof和rdb,有什么区别,有什么优缺点。
MySQL数据库怎么实现分库分表,以及数据同步?
单点登录如何是实现?
谈谈SpringBoot和SpringCloud的理解
未来的技术职业怎么规划?
为什么选择阿里?
所有面试真题详解为方便学习已整理成文档:
如果大家感觉有用的话我这边可以免费分享给大家,可以以下方式来获取。另外方便的话帮忙转发一下让需要的程序员朋友看到。
还是那句话,如果你寻求一个改变工作现状的机会,那明年的金三银四绝对是个好时间。如果你已经在准备金三银四了,不妨现在就开始学习起来。