“ 最近身边有很多朋友去面试,也有一些朋友在跟我交流。我也是在两个月之前面试了很多家公司,也准备了比较长的时间。跟大家交流一下。”
接下来给大家讲讲我总结的面试技巧和方法。
01
—
准备
你做过哪些项目?这些项目用了哪些技术栈?你用负责什么模块?
对于这类问题,你要做到的是你必须熟悉整个项目,用到了哪些技术组件,你负责的那块儿用到了哪些技术组件,这个技术组件的特点是什么。这个组件的相关知识点。比如项目中用到了RabbitMQ,你们用RabbitMQ来解决什么问题?RabbitMQ有几种模式?当一个消息还没消费完,服务挂了,怎么保证消息不丢?
问你一些基础知识吧。HashMap用过么?底层是怎么实现的?
这类问题就是得去看、去记,没有别的什么方法,Java基础部分一定要好好准备,有些框架可以不会,但是Java基础一定要会,比如集合框架、基本类型和包装类、String相关的、重载重写、hashCode和equals等等。Java集合相关的问题非常多,这块儿要着重看(LIst,Map,Set)。问题一般都是加载因子是多少?默认长度是多少?怎么扩容的?底层存储用的哪些数据结构?什么时候转变成红黑树?红黑树有什么特点?和1.7有什么区别?
用过多线程么?知道线程池么?
多线程相关的问题一般公司问的比较少,但是有些面试官也会问,考察你的知识面。这儿一般就是synchronized和reentrantlock的区别?CAS是啥,原理是啥?ThreadPoolExecutor七个参数的作用是什么?什么情况会导致死锁?volatile是啥?什么是指令重排?
我看你们用的是SpringBoot,跟SpringMVC有啥区别?什么是Aop?什么是Ioc?
这类问题就是问Spring相关的问题,Spring这儿也是需要记的,理论知识较多。这儿一般会问哪些场景会使用Aop?Aop底层是怎么实现的?动态代理和静态代理有什么区别?Spring的动态代理有几种方式?
说一下MySQL的索引吧?哪些查询会导致索引失效?索引的底层数据结构是什么?
MySQL相关的问题也很多,比如给你出一道写SQL的题目,问一些关于索引问题,mysql的锁(这个问的比较少,一般互联网公司才会问),MVCC的原理等等。这块儿要好好去看。
Jvm有几个区域?哪些区域是共享的?
这儿就是Jvm的相关问题了,也是理论知识比较多,但是有点东西还是可以靠理解来记的,当你了解了垃圾回收算法,堆内存的分区你也就能明白了。比如分为哪些区域?每个区域都是干啥的?堆内存是怎么分区域的?垃圾回收算法有哪些?垃圾回收器有哪些,有什么特点?类加载机制是啥?
用过Redis吗?用来解决什么问题?有几种数据类型?
这类问题就是看你的学习能力了,一般会问Redis,ES,RabbitMQ分别用来解决什么问题,某些用法。比如Redis的string类型怎么存值,怎么取值?过期时间怎么设置?有几种数据类型?分别有哪些使用场景?和SpringBoot一起使用的时候序列化的问题怎么处理?ES怎么使用?keyword和text区别什么?用的哪个分词器?数字怎么处理?什么是倒排索引?RabbitMQ怎么使用?有几种方式?消息怎么防丢?
用过微服务框架么?说一下SpringCloud的有哪些组件,分别是干什么的?
这儿也是问的比较多的,不过问的比较浅,知道每个组件是干啥的就行。比如Eureka注册中心(阿里的Nacos也是注册中心),Config配置中心(阿里的Nacos也是配置中心),Gateway是网关(Zull也是网关,性能要弱于Gateway),Feign是做服务间调用的(使用的组件是OpenFeign),Ribbon是负载均衡组件(已经集成在Feign中了),Hystrix是断路器,还有阿里的限流组件Sentinel,阿里的分布式事务组件Seata
以上就是常问的问题和知识点,大家一定要好好准备,我建议大家在准备的时候写到纸上,你每天没啥事的时候就看一遍,用来加深记忆,要不过几天就忘了。
02
—
简历&面试
简历也是非常重要的,一般简历都是三部分,第一部分是个人信息,第二部分是掌握的技能,第三部分是项目经历,有点还有第四部分,个人评价。那么我们分开来说。
-
个人信息。在这儿有几个非常重要且必填的信息,姓名,电话,性别,邮箱,生日,教育经历(包含学历)。因为有的公司有一些特殊要求,比如不要女生,不要大专的,以免我们白去一趟。 -
掌握的技能。这儿可以把你知道和用过的技术都上写,但是切记不要写的夸大,熟练就是熟练,不要写精通。以免问到你不知道的,让面试官觉得你不实诚。 -
项目经历。这儿要把你做过的有特点的项目写上,如果做过的项目少就都写上。项目经历也要分块写,项目介绍,项目周期,用到的技术栈,你负责的模块,遇到的问题。 -
个人评价。这部分可有可无,如果写上就是什么适应能力强,学习能力强等等吧,如果有开源项目的可以写写。
在面试的自我介绍这儿,我觉得也需要适当准备下,比如叫什么名字,多大了,哪个学校毕业的,做了哪些项目用到了哪些技术,在工作之余你学习过哪些技术,写过哪些开源项目等等。
03
—
谈薪资
以上就是我个人的一些建议和想法。希望能帮助到大家。
本文分享自微信公众号 - 自增程序员(javaipp)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。