美国上市公司,专注Java培训21年

面试官分享:3年以下经验程序员的面试方法论


这一套面试的方法论,主要应用在3年以下经验的应聘。

一般而言,面试的过程是笔试->机试->技术面->人事面。

第一个前提,每一个步骤都要发挥它应有的价值,比如笔试,就应当划分一个严格的分数线,针对招聘目标区分档次。

第二个前提,你和面试者的时间都很宝贵,为了照顾对方的面子而进行下一轮面试其实是伤害,双方都很尴尬的,有这个时间不如提供职业咨询和建议。

在笔试和机试部分,达不到要求的,可以考虑按分数直接谢绝,如果担心误伤(毕竟有些笔试题出题意图就很诡异),可以考虑把分数线降低。

技术面部分,请确定你的招聘目标,是专研技术的研究者?还是走上市场的现场实施?对于不同的面试者,不要提出和你要求无关的问题。

如何筛选问题?对外包面试人提问 spring 的 aop 实现原理,就不太合适,因为你不需要他去研究 spring,而应当偏重在问题解决上,比如 JVM 每隔几天就会因为内存溢出挂掉,要要从哪里入手解决。

我会把我的问题划分为三个方面:基础类,框架原理类,框架应用类。

假如面试的是研发人员,基础类和原理类就属于必查,实践类就属于加分项。

基础类问题:

每个类型都可以继续往下细分,这里以基础类作为讲解,我会提三个问题:

1、什么是面向对象

2、说一个你最熟悉的数据结构

3、说一个你最熟悉的算法

第一题是必须题,后面两道都是用于加分。

很简单?说一个事实,在我两省十多所大学四年的面试经验中,这三道题能过滤掉八成的毕业生。来看我怎么提问的:

问题一 :

该问题的难度以“吃方法”分野。

之前基本是考察语法和封装性,以及对基本概念的重视程度。在提示之后依然没有意识到自己错误的,坚决不用。

吃方法属于进阶题,看着很简单,对于很多程序员来说就是直觉性就明白的问题吧?其实,这是需要多种能力的:

a、猫吃老鼠,要能理解猫是一个类,吃是一个方法,老鼠是一个类,作为吃的参数;

b、猫吃鱼同理,吃老鼠和吃鱼这两个行为,本质上来说,都是吃食物

c、食物是单独是个接口,老鼠和鱼都是它的实现类。

看,面向对象分析理解,抽象能力,继承和多态的应用,接口和类的理解,具备所有这些,才能快速准确的做好这个吃方法。

问题二:

说一个最熟悉的数据结构,又或者,简单一点,说一下 LinkedList和ArrayList 的区别。

相信很多面试者都遇到过这道看上去很蠢的题,网上有很多答案,他们说的基本都没错,但是,按这些答案来回答,不会给出很高的评价。

这样提问:为什么 LinkedLis t查询会比 ArrayList 慢?又或者,如果 java 没有提供 LinkedList,你要如何实现出来?

这里考验的能力有两个,两者有其一,都可以打出高分。

1、对于需求的理解能力

2、阅读源码的兴趣和能力

链表的定义是“表由一系列结点(链表中每一个元素称为结点)组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域”。

把这一段话当成需求,那么,名词有:表、结点、数据域、指针域。

同时又能得出它们的包含关系,表里有多个结点,结点里有数据域和指针域两个部分。

完成了这一部分分析,自然就能设计出对应的 LinkedList 类。查询为什么会慢呢?查询对应的是 get方法,get(i) 自然是要从头结点的指针域迭代 i 次,取出对应结点数据域,这个迭代过程导致了慢。

无论是通过自行分析还是阅读过源码懂得这个道理的,都说明具备一定能力或潜力。

问题三 :

说一个最熟悉的算法?

其实这里考验的是多个层级:

1、是否有认真准备面试

2、数理逻辑水准

3、算法水准

拿最常见的排序算法说事,能说出任意排序算法原理,说明至少有认真对待面试。

能说出快排、桶排、堆排等复杂一点的排序算法,并且能指出得到最差和最优结果的输入,这一部分,需要面试者能在脑中模拟算法运行,根据算法本身的原理,来解释为什么快和慢。

有认真学习过算法,理解时间复杂度本身是什么概念。

举个例子,一个算法的平均时间复杂度是 O(1),另一个是O(n),真正执行的时候,前者会比后者快吗?

答案是不一定,因为我压根没提输入是什么。

如果不能理解 O(n) 描述的是趋势,那么,对算法的理解就还未入门。

又比如,如何计算一个归并算法,比如 T(n)=T(n/2)+n/2 的时间复杂度。这一方面考验了算法,一方面又考验了面试者的学习能力。

框架原理和应用类问题:

面试官需要明白,框架问题回答不上来,并不说明对方比你差。

每个人的专精方向是不一样的,框架这种事,也就是个工具学习和经验的问题。用业务相关问题问同行的老鸟,能够理解,来问毕业生和新手,问并不使用该框架的老鸟,就很莫名其妙。

对于这种情况应该如何考察呢?

框架不一样,思想有相同。

1、询问对方最熟悉的框架

2、询问框架使用中遇到的最困难的问题

3、有没有阅读过框架源码,解释一下框架某部分功能的实现原理

对于自己最熟悉的框架的了解程度,能说明面试者的真实水准。

有些新手使用框架的时间都很短,那么,可以换个方式出题,比如:“你知道 spring 的依赖注入吧?假设 spring 没有这种功能,让你来写这个,会如何写?”

依赖注入并不是什么黑科技,了解反射理解面向对象的程序员,都能答出个一二三四。

总结:

公司和员工是双向选择关系,应聘者大可不必把自己放到“求”职的低位,面试官也请勿趾高气扬。

不管招聘还是应聘,无非就是了解自己和对方的需求,然后展现优势,而已。

感谢大家阅读由java培训机构分享的“3年以下经验程序员的面试方法论”希望对大家有所帮助,更多精彩内容请关注Java培训官网

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java面试逻辑题
    Java面试逻辑题
    1、什么是反射 API?它是如何实现的?答:反射是指在运行时能查看一个类的状态及特征,并能进行动态管理的功能。 这些功能是通过一些内建类的反射 API 提供的,比如 Class,Method,Field,Constructors 等。 详情>>

    2017-10-25

  • Java技术面试题(企业面试题常问题目)
    Java技术面试题(企业面试题常问题目)
    感谢大家阅读由java培训机构分享的“Java技术面试题(企业面试题常问题目)”我们会不定期的分享更多关于面试题的文章,供广大java学员进行参考,更多精彩内容请关于Java培训官网 详情>>

    2017-08-02

  • Java笔试题大全带答案(经验汇总)
    Java笔试题大全带答案(经验汇总)
    8-8java编程笔试面试简答题,来自java培训机构的分享 详情>>

    2017-08-08

  • Java开发面试题汇总(这一篇就够了)
    Java开发面试题汇总(这一篇就够了)
    感谢大家阅读由java企业面试题分享的“Java面试宝典-这一篇就够了”希望对大家有所帮助 详情>>

    2017-12-18

  • Java开班时间

    收起