Java教程

JAVA程序员面试系列(二)

本文主要是介绍JAVA程序员面试系列(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

本系列适合校招以及1-3年左右社招的小伙伴。
  首先介绍一下我自己。我是双非渣硕毕业的码农,目前在某996大厂工作,校招进的是一家半互联网血统的中厂。从2020年下半年开始就在跳槽面试,基本上把杭州的互联网公司,非互联网大厂,中厂,有前途的小厂都面了一遍。自己一路走来,从一面挂,到最后的接连拿到offer,期间不断的经历失败然后补强,也算是提升了自己的修为。最近终于抽出时间,把之前一直想整理的面经整理一下,也希望对近期在找工作的小伙伴能够有所帮助。
没看过系列(一)的小伙伴,可以直接传送去看一下。一是网易的面经。
  
  言归正传,自动上次面了网易第一面就挂了以后,整个人都有点着急,感觉自己没有准备好。但之前投简历的时候同一时间还投了其他公司,于是那几天面试特别多,都挑在了那几天面试。这边我就挑几个有代表性的说一下。实在没时间的小伙伴可以直接跳到文章末尾看面试点,建议看完全文,其中包含了一些面试背后的思考过程。
  
  1. 涂鸦
  不大不小的一个厂吧,(听说涂鸦前不久没钱赶着上市?算了,反正没进。)涂鸦面试的形式是电话面试,和面试官约了某个工作日的晚上面试,不过这也是一次比较有意思的经历。
  面试电话来了,很奇葩,什么都没交流,连自我介绍都没问,感觉特别着急的样子,现在想想是不是刷KPI的。一开始就问技术,说的好听是技术,说的难听就是八股文。由于博主在简历的项目中写了分布式事务以及分布式锁,所以面试官就问了这一块内容,以及在项目中是如何实现的,这里特别问了一些实现的细节,主要是想看看你是不是自己做的,还是吹吹NB。这里要提醒小伙伴们,如果你对这个技术点不是很了解,或者在项目中压根就没用只是为了好看写上去的,那你一定要好好思考下这个技术点,自己是如何去实现的,就算你没实践也要用你的脑子去思考一遍从头到尾。不然没问几句你就崩了。然后又问了MQ相关的内容,问MQ的推拉模式,推和拉的区别是什么,怎么选择,如何实现的。这里自己挑一个熟悉的MQ说一下就行,我说的RocketMQ,JJYY和他说了一下,介绍了源码中是如何实现推拉的,推的压力在哪里,拉的好处在哪里,一般我们都选择拉模式。最后还问了一下JVM的几个简单概念,JVM中有哪几个区,垃圾回收算法有哪些。都是一些比较常见的问题。
  涂鸦没有二面,可能是自己前面说的几个问题回答的不是很好,也有可能就是真的被刷KPI了,因为一面总共也就30分钟左右,面试官给人的感觉也很着急。所以小伙伴们投简历的时候,不管是什么途径,最好问一下对方是不是真的缺人,具体的HC有多少。

2. 大搜车
  独角兽企业,也是不大不小的一个厂。面试的形式是电话面和现场面。
  一面:和HR约了一个时间,到点了面试官电话打过来。先是简单的自我介绍,包括简单介绍做过什么项目。和之前的面试差不多,听完自我介绍以后,最先问的还是分布式事务相关的内容,分布式事务是什么,你在项目中是怎么实现的,具体的实现细节是怎么样的。由于博主在项目中用到了定时任务去实现最终一致性,所以就回答了一下怎么用定时job实现的,然后面试官继续追问如果让你自己去实现一个定时job,你会如何实现?这里可以简单说一下,有好几种方法可以实现定时任务,比如rocketMQ的延迟队列,spring的定时任务,或者你可以自己写一个定时任务,用JUC中的定时线程池去实现。这里主要是表达一下自己的想法,让面试官了解你对于问题的思考,同时反映一下你的知识广度和解决问题的能力。
  接下来又问了JVM相关的问题,JVM调优怎么调的,常用的GC算法有哪些?PS,PO,CMS这几个GC算法的概念。继续又问了JUC相关的内容。创建线程池的方法,ThreadPoolExecutor方法的七个参数各自的意思,如何自定义线程创建工厂,拒绝策略,阻塞队列的大小等等。最后还问了redis的哨兵机制,rocketMQ的延迟消息特性。
  总体感觉回答的还可以,经历过之前几次的准备不足,大搜车的这次面试相对准备还是比较冲锋的。以上这些问到的都是在简历中有所涉及的,所以小伙伴们一定要注意不要在简历上写你不怎么熟悉或者不了解的技术点,这是自寻死路。
  二面:现场,未完待续。。。。。。

后续的面试经历我会一点点的梳理好写上来,如果大家觉得我写的还可以,对你有帮助,还希望点个赞。这样我也有更大的动力去回顾自己这一路的磨炼,整理出更高质量的面经,给你们更好的参考资料。多谢。

面试点:

  •   涂鸦:

    1. 分布式锁,分布式事务,及其在项目中的应用。
    2. 不同MQ之间的差异,MQ的推拉模式,各自的作用。
    3. JVM基础概念,GC算法。
  •   大搜车:

    1. 分布式锁,分布式事务,及其在项目中的应用。
    2. JVM基础概念,GC算法及其概念。
    3. 线程池的创建和自定义ThreadFactory,rejectHandler,blockingQueue。
    4. redis哨兵机制,rocketMQ延迟消息。
这篇关于JAVA程序员面试系列(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!