您的位置 首页 java

程序员面试过程中,面试官想要从"自我介绍"获得什么信息?

先说一个可能会出乎大多数求职者意料的事实,大多数面试官在面试前,不会预先浏览下求职者的简历,甚至不少面试官前一刻还在开会或写代码,但后一刻就被要求面试,可能也就粗略看一下求职者的简历。

所以面试官要求程序员求职者自我介绍时,不大会主动地想从中了解什么信息,也就被动听一下,然后趁着求职者在介绍时,过一下简历。求职者在做好自我介绍后,往往会被要求介绍项目。

但后面我要说的,和是否能应聘成功有关,如果求职者在面试前不做准备,临场发挥做自我介绍和介绍项目,就相当于把后继技术方面的提问权交给了面试官,万一面试官问到了求职者不熟悉的点,那么过面试就悬了。

所以求职者在面试前,应当准备相关说辞,这样可以尽量把面试官的提问引导到自己准备的范围,同时还能最大化地抛出亮点。在扩展下,一般自我介绍和项目介绍能放一起说,所以你可以在面试前一并准备。

1 先抛出自己和这个职位的匹配度。

比如可以说,我叫xxx,(省略自我介绍性文字),我之前在 java 方面有3年(大于等于职位要求)开发经验,有my SQL , Oracle 等项目经验,有 nginx kafka ,xxx等的使用经验。

总之先亮出你和职位介绍的匹配度,职位要求上有的技术,如果你有,直接说。这里请注意,不同的公司以及不同的项目,对技术的要求可能大同小异,但一定存在差异,你在面试前,一定要事先阅读该职位的介绍,同时针对性地给出使用过的技术,也就是说,你得为不同的公司,不同的职位准备不同的技术介绍说辞。

2 介绍项目时,别过多介绍需求,大致介绍你做的模块,介绍项目流程和使用的管理方式,尤其要说明项目管理和发布用到的组件和技术。

比如你可以说,这个项目里,我做了xx和xx模块,项目规模是多少人,做了多久。这个项目是用敏捷开发的管理方式,我们每天都有站会。这个项目,我们用 jenkins 发布,用 jira 管理bug和进度,用 maven + github 来管理项目,等等。

你这样一说,不仅能证明项目的真实性,而且还能说明,你除了会写代码之外,还了解项目开发的相关流程。但千万记住,这部分别大谈特谈项目的需求和业务流程,因为面试官不感兴趣。一般来说,介绍项目需求和你做的模块,可以一笔带过,用不到一分钟的时间来说明。

3 介绍好项目概况后,需要立即抛出亮点,但别展开。下面列些哪怕是初级开发也能抛出的亮点。

这个项目里,我解决过了oom问题,有过用 Redis 缓存的经验,解决过redis内存溢出问题,解决过 dubbo 超时而导致的问题。在项目开发过程中,我还专研过ArrayList和 HashMap 的底层源码,还看过Spring Boot相关注解的源码。

大家可以对比下,大多数候选人面试java,在项目介绍阶段,是大谈特谈项目需求和功能,这就相当于把提问的控制权交给面试官。但相反,你不仅列出了你和该职位的匹配度,还用项目管理方式证明了你项目的真实性。更重要的是,你还抛出了诸多分布式组件和解决过的实际问题作为亮点。

这样一来,不少面试官,尤其是资历比较浅的面试官,往往就可能在听到你的说辞后顺带一问,比如顺口问,你们项目是怎么用Redis的,你是怎么解决OOM问题的,这样就相当于进入到你事先准备好的范围。

但是请注意,你在介绍项目时,可以抛出亮点,比如说解决过oom问题,但绝不能展开说怎么解决。原因很简单,你还在介绍项目,如果展开,就相当于条理不清晰。不过你提到的点,如果面试官感兴趣,自然会继续提问,你都不用着急。

至此你就介绍完了项目,这部分的说辞你面试前一定要练习,练习时要结合不同项目的技术需求点做微调。这部分的说辞尽量控制在3分钟以内,尤其地,你需要练习下“顺口抛出亮点说辞”的语气和神态,尽量做到自然,别让面试官感觉你事先刻意准备过。

你要知道,大多数面试官,在面试前是不会看候选人简历的,也不会准备面试所要提问的问题,所以往往会是在面试中随机地想些问题来提问。

所以,你一旦抛出了亮点,非常有可能吸引面试官继续提问,这样的话你可以大概率把面试官的问题引导带到你准备的范围。

其实后面的内容是讲java程序员如何准备面试时的亮点,虽然这部分内容和介绍项目经验无关,但毕竟也关系到面试的成败,所以就一并给出了。

先讲下Java核心方面的事先准备和引导相关技巧。在java核心方面,哪怕初级开发多少也能准备集合、线程和异常处理等方面的说辞。

集合方面,你可以准备下HashMap的底层代码,尤其是和 hashcode 的源码,同时也可以准备下ArrayList和快速失效(fast fail)的底层代码,随后可以再进一步看下 ConcurrentHashMap 的读写并发管理部分的代码,因为其中包含 volatile 散列表 数据结构和线程并发部分的技能,而且jdk1.7和1.8 ConcurrentHashMap的底层代码实现起来还不同,而且ConcurrentHashMap源码网上都有,还不难,所以你尤其可以通过ConcurrentHashMap来展示实力。

准备好这些亮点以后,你可以在项目介绍时顺带提一句,在我做项目的时候,解决过快速失效的问题,也解决过因hashcode没重写而导致的问题,后来我结合分析源码,不仅解决了问题,而且还了解了问题深层次的原因。这样一来,面试官非常有可能被吸引过来提问,这样你就能顺势抛出你面试前准备的亮点,而且甚至还可以边写代码边讲述。

线程 方面,准备下锁,volatile, 线程池 ThreadLocal 的说辞,具体通过ConcurrentHashMap了解下锁(1.7)版本和 synchronized +volatile(1.8版本)的用法,以及ThreadLocal里可能引发 内存泄漏 的问题,这些点网上都有,本文就不展开了,其实也未必多,能讲清楚就行了。

这方面怎么在介绍项目时引导?你可以说,我们项目在xx需求里,用到了ConcurrentHashMap对象,准带着我看了里面的源码,其中包含了线程相关的volatile关键字。然后坐等面试官提问。

其他方面,或者你可以从ThreadLocal,引出底层的Weak引用话题,再引出 JVM 结构以及OOM调优方面的话题。这块不知道也自己去查,不说白不说,而且这方面的项目引导说辞,大家也可以照着上文的方式自行准备,反正也不难。

Java核心方面,其实还有很多可以挖掘的点,比如String, final关键字等,而且对初级开发也适用。只要大家第一准备些(未必很深的)源码和解决(oom)问题的说辞,再按上文给出的方法,在哦介绍项目时随便找个点抛出。只要面试官一旦问及,你回答好后再多说句,同时抛出事先准备好的亮点说辞。

第一步,发现系统很卡,或者日志里频繁出现OOM异常。

第二步,用dump文件看OOM时的内存镜像,看的工具可以是JMAT。这两个步骤是通用的。

第三,通过dump文件,再结合日志上下文,发现了OOM的原因,比较简单的原因是Redis缓存超时时间过长,或者是ThreadLocal里的对象用好没remove(这块还涉及到弱引用,大家可以自己去查,本文不展开),或者创建线程池时,等待队列设置成了无界,或者你在 mybatis 里,where条件都是带if的,即如果传入id和name再拼装where id = xxx之类的语句,在一种场景里,都没传条件,所以where后面不带条件,把数据库里记录全捞出来了,导致OOM。

第四是解决,发现问题后,对症下药解决就很容易,比如降低Redis超时时间,或者修改好对应的代码。但既然你说是根据线上问题排查出来的,那么就得说如何解决,善始善终。

总之在一样,项目介绍阶段,顺带说句,在这个项目里,我还排查和解决过oom内存问题,然后做等面试官来提问。

此外,数据库调优也绝对是个亮点。你在介绍项目时,也可以顺带说一句,在这个项目里,我用过索引和缓存,解决过数据库性能问题,然后做如下的准备,再坐等面试官提问。

1 熟悉 索引 ,包括索引结构,复合索引和回表等技能,最好是结合源码。

2 单机版调优技能怎么说?通过看执行计划,调优 sql 语句,具体是在项目中,会在 linux 上设置,如果有超过10秒的SQL就打印出来,然后通过执行计划看耗时点,比如大多是走全表扫描,或者有了索引没用到,或者子sql运行了多次,再往深讲就是Oracle里连接方式不对。你通过执行计划看到问题所在后,就对应修改,比如建复合索引,或者通过with语句把子查询提取出来。

3 可以再进一步讲些MyCAT分库分表和redis方面的调优能力。这方面可以准备的项目说辞是:比如业务请求里,会经常用公司ID向风控模块看风险情况,那么就可以用ID做键,风控字段做值,另外再把null放到键里,以放缓存击穿。另外对于一个千万级别的大表,你可以用ID作为分表字段,分10个表,根据最后一位的值定位到具体的表。同时排查所有的 SQL语句 ,把一些可能全表关联的SQL语句,比如带group by和多表关联,或者用Java业务写,或者优化。

4 同时准备些数据库调优方面解决过的问题,比如索引对应的字段重复率太高,所以索引没用到,解决方法是建复合索引,或redis缓存信息没设超时时间,导致内存爆掉,解决方法是设下。这种问题网上一大堆,你适当准备下。

上文里给出的在项目介绍时抛出的说辞虽然不少,但如果练习一下,绝对可以在短时间内抛出,而且还不露痕迹。这样就能在介绍完项目之后,最大程度上控制面试官的后继问题。

写了这么多了,做个总结。

1 其实面试官在发问是,有时候甚至是无意的,或者是习惯性地遵循某些面试流程,一般不会有什么深意。

2 但程序员求职者面试前,可以按本文给出的方法做准备,并在面试中做引导,最大程度地展示自己的技能和亮点。

文章来源:智云一二三科技

文章标题:程序员面试过程中,面试官想要从"自我介绍"获得什么信息?

文章地址:https://www.zhihuclub.com/189938.shtml

关于作者: 智云科技

热门文章

网站地图