其实,每次面试的问题都逃不过这几方面!
Posted javatiange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了其实,每次面试的问题都逃不过这几方面!相关的知识,希望对你有一定的参考价值。
最近在主攻的面试方面的文章。
自己在网上翻阅了很多面经,也建立了面试题交流群(想入群的私我)。
所以看了很多真实的、新鲜的面试题。
再结合下自己的面试经历、自己面别人的套路和之前朋友之间的面试交流。
我总结了下,提问方向基本上都是固定的。
让我们一起来看看吧~
项目
毋庸置疑,这玩意非常重要。
几乎所有的面试,面试官都会让你介绍自己的项目。
他会问你:
-
项目整体架构
-
共包含哪些服务
-
服务之间信息流是如何流转的
-
在项目中,有没有遇到什么难点
-
有没有排查过项目的线上问题
-
你觉得你现在的设计有什么问题么?
-
如果你负责的服务从100TPS变成1万TPS会有什么问题?怎么处理?
-
如果你负责的这个功能之后需要频繁变更,你怎么设计?
-
等等等
当然还有很多种问法,不过都会结合你当前的项目进行发问。
面试官想考察你:
-
这个项目是不是真的是你做的
-
是否对项目整体都有把控和关心
-
平日里是否有对项目进行总结性思考
-
是否有线上故障处理能力
-
是否有设计和架构思维
-
一些知识点是否能学以致用,比如线程池原理说的很溜,但是不知道在项目上怎么用。
所以要多多准备自己的项目,扒一扒你自己负责的模块。
多想想,如果产品要频繁变更需求的话,这里应该怎么设计。
如果公司今年发展的很迅速,客户量激增的话,你负责的服务会有什么问题?
需要怎么处理、怎么设计?
因为这非常容易被问到,如果你答的好。
那么不仅突出你这个人有点东西,还会体现出你平日里喜欢钻研和思考。
Java基础
这个也很重要。
HashMap呀、ConcurrentHashMap哟
Synchronized呀、Reentrantlock哟
volatile呀、threadlocal、线程池等多线程相关的。
JVM、GC。
这些问题还是很常见的,而且网上基本上都有,大多数同学称之为“八股文”。
百度百科:八股文(英译:Stereotyped Writing;Eight-Legged Essay),也称制义、制艺、时文、八比文,是明清科举考试的一种文体。八股文章就“四书五经”取题,内容必须用古人的语气,绝对不允许自由发挥,而句子的长短、字的繁简、声调高低等也都要相对成文,字数也有限制
不过,八股文也能看出深度的。
就拿 Synchronized 说,一般说个能自动解锁、可重入啥的,然后就锁升级一套combo。
好点的还能说说字节码层面,扯个 ObjectMonitor
如果你还熟悉 AQS 的话,你会发现好像机制是一样的呀。
都有一个同步队列,还有条件等待队列,然后唤醒 CAS 抢锁。
所以当面试官问你 Synchronized ,你把 JVM 的实现跟他一说,再给他延伸一下 AQS ,怎么说?
这波,有点秀。
面试官对你的印象,肯定很深,那你这几率不就大大的?
所以有点追求,你稍微深入点,你就比大部分人都牛。
对了,Java 基础面试题我可是已经整理了 52 题了,答案也写了,还不知道的去我公众号翻翻吧。
中间件
一般你的简历肯定会写 Redis、Memcache、Kafka、RocketMQ、RabbitMQ、Dubbo、Spring Cloud 之类的。
你写啥基本上会问啥。
我拿 Redis 举个例子:
-
你的项目为什么会选择用Redis而不是Memcache(技术选型)
-
你项目中一般怎么用 Redis 的
-
线上遇到 Redis 的相关问题没
-
你对 Redis 了解有多深?源码看过吗
-
说说 Redis rehash
-
Redis 集群了解么?
-
Redis 分布式锁怎么用?有什么问题?
当然,还有很多问题,比如什么过期策略啊,AOF 之类的,我就不一一列举了。
总之,这些问题想要得到的反馈是:
-
项目上真正的使用,使用到哪个程度
-
看看你是否有选型能力,还是只是个不会思考的工具人
-
看看你对一个东西钻研有多深
-
是否有中间件相关排查和处理问题的经历
中间件的问法基本上就是这么个套路。
我号上也写了很多相关的了,比如 Kakfa 和RocketMQ 的对比呀之类的。
所以,打有准备的仗。
如果你觉得时间来不及,你可以挑一个重点攻克一下,和面试官说我xxx比较熟,这样也是 ok 的。
毕竟,没有人是全能的。
数据库
这个也是必问的,一般都是 mysql。
会问一些:
-
项目上如何设计索引的呀
-
写 SQL 有哪些需要注意的
-
分库分表相关
-
数据太多怎么查询
-
常问索引结构,为什么要这样设计?
-
能说说索引查找的流程么?了解多少说多少
-
如何优化 SQL
-
隔离级别、MVCC
-
MySQL 的锁机制
-
redo log 、undo log 之类的
基本上就是这么些个问题,这么一列其实也就这样。
从中看看:
-
是否有 SQL 调优能力
-
是否有数据库设计能力
-
对数据库原理了解多少,即深度
嘿嘿,等着我的 MySQL 系列吧~
设计、场景、架构类
比如:
-
一个短链服务如何设计
-
排行榜如何设计
-
查找附近的人,如何设计
-
等等
这类就是看看你个人的设计能力了。
包括条理是否清晰、考虑是否全面、表述是否通顺等等。
然后会和你互动,会问如果要这样的话怎么设计呀,如果要那样的话呢?
你说我扩容,我说不许扩容。
你说我限流,我说不许限流。
所以,这个还是得看看你的应变能力和平日的积累了。
其他
社招的话主要就这几方面,不过不排除一些其他问题。
这个其他,指代的东西其实很多、很广。
比如,网络相关的 TCP、UDP、HTTP、HTTPS。
操作系统相关的用户态、内核态、零拷贝、内存分页等等。
这种会有,不过出现频率不会那么高。
社招基本上围绕项目来展开的,以上的问题,校招多些。
对了, Spring 、设计模式之类的,其实也比较常问,就划到其他这个类目吧。
上机
大厂逃不过笔试。
-
手写个LRU
-
反转链表
-
生产者消费者
-
多线程顺序打印
-
二叉树之类的
反正一般不会太难,最多中等难度。
这个平时日得多练练,注意是不要在 idea 里面写。
在 LeetCode 上直接写好,毕竟到时候没有联想功能。
靠日积月累的刷题了,每天一题刷刷更健康!
也可以针对性的练习,比如把多线程专题一次性都刷完,然后再刷刷链表的啥的。
反正就是靠练,几乎需要形成肌肉记忆。
虽说 LeetCode 上面题目很多,但是常考的其实不外乎就那么几种。
一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。
一千道互联网 Java 工程师面试题
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)
初级—中级—高级三个级别的大厂面试真题
阿里云——Java 实习生/初级
List 和 Set 的区别 HashSet 是如何保证不重复的
HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?
HashMap 的扩容过程
HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
对象的四种引用
Java 获取反射的三种方法
Java 反射机制
Arrays.sort 和 Collections.sort 实现原理 和区别
Cloneable 接口实现原理
异常分类以及处理机制
wait 和 sleep 的区别
数组在内存中如何分配
答案展示:
美团——Java 中级
BeanFactory 和 ApplicationContext 有什么区别
Spring Bean 的生命周期
Spring IOC 如何实现
说说 Spring AOP
Spring AOP 实现原理
动态代理(cglib 与 JDK)
Spring 事务实现方式
Spring 事务底层原理
如何自定义注解实现功能
Spring MVC 运行流程
Spring MVC 启动流程
Spring 的单例实现原理
Spring 框架中用到了哪些设计模式
为什么选择 Netty
说说业务中,Netty 的使用场景
原生的 NIO 在 JDK 1.7 版本存在 epoll bug
什么是 TCP 粘包/拆包
TCP 粘包/拆包的解决办法
Netty 线程模型
说说 Netty 的零拷贝
Netty 内部执行流程
答案展示:
蚂蚁金服——Java 高级
题 1:
jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?
ConcurrentHashMap
并行跟并发有什么区别?
jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?
如果叫你自己设计一个中间件,你会如何设计?
什么是中间件?
ThreadLock 用过没有,说说它的作用?
Hashcode()和 equals()和==区别?
mysql 数据库中,什么情况下设置了索引但无法使用?
mysql 优化会不会,mycat 分库,垂直分库,水平分库?
分布式事务解决方案?
sql 语句优化会不会,说出你知道的?
mysql 的存储引擎了解过没有?
红黑树原理?
题 2:
说说三种分布式锁?
redis 的实现原理?
redis 数据结构,使⽤场景?
redis 集群有哪⼏种?
codis 原理?
是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。
好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?
前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~
如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料
基础篇
JVM 篇
MySQL 篇
Redis 篇
由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
需要的小伙伴,可以一键三连,下方获取免费领取方式!
以上是关于其实,每次面试的问题都逃不过这几方面!的主要内容,如果未能解决你的问题,请参考以下文章