“ 最近身边有很多朋友去面试,也有一些朋友在跟我交流。我也是在两个月之前面试了很多家公司,也准备了比较长的时间。跟大家交流一下。”
二三线城市程序员怎么去面试?
二三线城市的面试和一线城市的程序员面试有很大区别。二三线城市大多数是外包公司、企业应用定制开发的公司,一线城市大多数都是互联网公司,所以一线互联网公司多问高并发、分布式、jvm、各种技术组件底层实现原理等等,而一般的公司问的一般都是,你用过这个框架么?使用上要注意什么?这个和这个有什么区别?所以一般公司问的都是使用层面的问题,而互联网公司问的都是底层原理的部分,出了问题你得知道怎么回事,怎么处理。
接下来给大家讲讲我总结的面试技巧和方法。
01准备
在面试之前一定要好好准备,你能写代码不代表你能去面试。写代码的时间遇到不会的东西,你直接去百度,得到答案之后一通粘贴复制,也没有刻意去看到底为什么要这样干,但是你百度的这些问题,很可能是面试官要问的,到最后的结果就是,你用过但是不知道为啥。比如你用ES,配置某个字段的时候用的keyword,也用过text,但是你不知道这两个的区别,面试的时候问到你了,你虽然用过,但是答不出来,那就是不会。所以对于每个知识点都要熟记于心。接下来我分享下Java的面试问的问题吧。
你做过哪些项目?这些项目用了哪些技术栈?你用负责什么模块?
对于这类问题,你要做到的是你必须熟悉整个项目,用到了哪些技术组件,你负责的那块儿用到了哪些技术组件,这个技术组件的特点是什么。这个组件的相关知识点。比如项目中用到了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简历&面试
简历也是非常重要的,一般简历都是三部分,第一部分是个人信息,第二部分是掌握的技能,第三部分是项目经历,有点还有第四部分,个人评价。那么我们分开来说。
个人信息。在这儿有几个非常重要且必填的信息,姓名,电话,性别,邮箱,生日,教育经历(包含学历)。因为有的公司有一些特殊要求,比如不要女生,不要大专的,以免我们白去一趟。
掌握的技能。这儿可以把你知道和用过的技术都上写,但是切记不要写的夸大,熟练就是熟练,不要写精通。以免问到你不知道的,让面试官觉得你不实诚。
项目经历。这儿要把你做过的有特点的项目写上,如果做过的项目少就都写上。项目经历也要分块写,项目介绍,项目周期,用到的技术栈,你负责的模块,遇到的问题。
个人评价。这部分可有可无,如果写上就是什么适应能力强,学习能力强等等吧,如果有开源项目的可以写写。
简历写完之后,就可以开始投简历了,我建议用BOSS直聘,但是一定要屏蔽你现在的公司。在这儿也有一个小窍门,就是你先投你不想去的公司,先去面试5、6家找找面试的感觉,克服一下紧张的情绪。然后也看看不同面试官问的问题,之前没有准备到的,查漏补缺。等到你觉得你已经准备的差不多了,你再去面你心仪的公司。
在面试的自我介绍这儿,我觉得也需要适当准备下,比如叫什么名字,多大了,哪个学校毕业的,做了哪些项目用到了哪些技术,在工作之余你学习过哪些技术,写过哪些开源项目等等。
03谈薪资
薪资这个东西,你心里有一个薪资范围,比如10-15,当HR问你想要多少,我觉得你可以说的灵活一点,比如“我的期望薪资是15k,不知道咱们公司的薪酬体系,如果我能入职的话,我可以根据公司的薪酬体系做一些调整,可以再商量”,这样留了一个活口,他们要是觉得15高,可以再商量。但是如果他们能给到你15,而你要了10,你就很亏。
二三线城市程序员怎么去面试,以上就是我个人的一些建议和想法。希望能帮助到大家。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。