首页 > 科技 > 「转」阿里现役P6面试流程实访录

「转」阿里现役P6面试流程实访录

在面试题的收集过程中,突发奇想,既然“金三银四”即将来临,何不让我一位已经顺利通过面试入职阿里的好友来分享一下整个技术面试的经验,让大家在面试的时候能有个参照。

兵哥,阿里菜鸟现役P6 Java工程师。

以下便是我跟他的聊天过程:

我:“兵哥,这次邀请你来,是想给咱们粉丝分享一些有关你阿里面试的经验,这边让你准备的面试题,你有带过来吗?”

兵哥:“你小子吩咐的事情,我当然不会忘了啦,我说之前怎么突然会请我吃饭。”

兵哥将打印好的面试文件递给我,我接了过来。

我:“呃~兵哥今天以技术面试访谈为主,那些事咱先缓缓。”

兵哥:“行,你问吧。”

我:“那我开始了啊,我看你这上面有4面的题目,阿里面试是只有四面吗?”

兵哥:“当然不是,这里的4面是技术面,还有HR面啊...”

我:“哦哦,我忘了,我只要了技术面的。能不能各挑一个题来讲讲你对相关问题的见解?”

兵哥:“没问题啊!听我娓娓道来。哈哈哈!”

“先从第1面开始吧,里面有一个比较简单的问题‘常用并发包下的类’。”

“其实,这个问题从表面上来讲,谁都能答出来,像ConcurrentHashMap啊,原子类啊,显示锁啊,还有阻塞队列、线程池这些等等。”

“但是,在回答面试问题的时候,不要把面试官想得那么简单,问这个问题的目的有两个,一是考察对Java并发了解的一个广度;第二个目的就是,准备从这个问题出发,可以往并发编程的深度来问。‘’

“我记得当时我接下来的问题就是显式锁的相关问题,问到了可重入锁,锁的公平和非公平,具体的实现等等。”

“如果非要延展的话,还可以问到这些问题:

ConcurrentHashMap的内部实现,又可以分为1.7,1.8分开来问。

阻塞队列有哪几种?

ArrayBlockingQueue,LinkedBlockingQueue,DelayQueue,之间的区别是什么?内部实现是怎么样?

甚至面试官还可以问到,现在我们觉得JDK提供的阻塞队列的性能不能让我们满意,针对JDK提供的阻塞队列的缺点,如何设计一个吞吐量可以达到每秒百万级的并发安全的队列。

“所以,这个题目是非常基础和简单的,但是开发性很高,面试官完全可以根据这个题目进行深入挖掘,其实这个题目表面上考察面试者的技术基础和广度,但隐含了对面试者技术深度的考察。

第2面的时候,就有涉及到源码的考察。比如,‘从源码的角度,描述一下SpringMvc的整个访问或者调用流程’。”

像Springmvc的话它的核心是一个servlet,DispatcherServlet, 用户从浏览器提交到DispatcherServlet,由这个类进行分发, 然后由这个类找到具体处理方法,叫HandlerMapping,然后再递交到Handler并执行这个Handler, 执行完后返回给ModelAndView,最后就是进行视图解析,响应结果到浏览器。

“这边可以走一张图。”

这是在兵哥能讲述的部分,我做了一些笔录。其实还有一些问题及答案,涉及到文章篇幅过长的问题,我这边也就不一一抛出来了,如果想要看看全部问题,可以在文末留言,小编发给大家。

最后面兵哥也提了些面试总结:“对社招面试,我的感觉是技术问的相对来说更加深入,所以对有些源码还是要了解点,比如并发相关的原理,是经常被问到的。”

“JVM就更不用说了,几乎是必问到的。”

“而且基本上所有的问题都是围绕具体场景,一般大厂都会结合具体场景来问你问题,不仅要会使用这些技术,还要知道为什么要用这个技术,以及如何做到高可用等等。”

后面还有道题,这边有个老师说是比较重要的一道题:

项目内存或者cpu占用率过高如何排?


一、在排查问题的过程中针对CPU的问题,使用以下命令组合来排查问题

1、查看问题进程,得到进程PID:top -c

2、查看进程里的线程明细,并手动记下CPU异常的线程PID:top -p PID -H

3、使用jdk提供jstack命令打印出项目堆栈:jstack pid > xxx.log

线程PID转成16进制,与堆栈中的nid对应,定位问题代码位置。


二、针对内存问题,使用以下命令组合来排查问题:

1、查看内存中的存活对象统计,找出业务相关的类名:jmap -histo:live PID >xxx.log

2、通过简单的统计还是没法定位问题的话,就输出内存明细来分析。这个命令会将内存里的所有信息都输出,输出的文件大小和内存大小基本一致。而且会导致应用暂时挂起,所以谨慎使用。

jmap-dump:live,format=b,file=xxx.hprof PID

3、最后对dump出来的文件进行分析。文件大小不是很大的话,使用jdk自带的jhat命令即可:jhat -J-mx2G -port 7170

4、dump文件太大的话,可以使用jprofiler工具来分析。jprofiler工具的使用,这里不做详细介绍,有兴趣可以搜索一下。


三、需要分析GC情况,可以使用以下命令:jstat -gc PID

所以这个问题,要分两部分来看,首先,要求面试者有这个方面的经验;第二个,其实还是对面试者的知识储备做了考察,如果对Linux的常见操作和命令不了解,Java的工具类不了解,Java虚拟机内部的机制不了解,哪怕不是面试,在实际工作中确实遇到了这个问题,也是没办法解决的。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/283803.html