趣说面试(一)

1,949 阅读5分钟

秘籍篇在千呼万唤中终于迎来了第一篇,从现在开始,来领略下磊叔的面试题吧?

刘秘:职场新手,社交老司机,自称可从容面对各种不同的面试场景...
磊叔:一个入职7个月就可以面试淘汰一个工作7年的新手面试官...

最近刘秘想尝试换一份工作,一个偶然的机会找到了glmapper工作室发布的JAVA研发工程师职位。于是就有了下面的一场面试。

面试官磊叔:“你好,刘秘,欢迎你来参加glmapper工作室的面试,你先做个简单的自我介绍吧”。
刘秘:“恩,好的!我是XXX大学毕业的,计算机专业。本科期间在XXXX实验室,做了(项目1/2/3...),研究生期间研究方向是XXXX,但是这个和我今天面的岗位关系不是很大,就不细说了。毕业之后通过校招进入了XXXXX公司从事XXXX方面的研发工作。Java方面,我是从XXXX年开始接触JAVA的,到现在已经XX年了,期间做过XX个JAVA项目,目前在XXX公司XXX部门做的是XXXX项目,我主要负责XXXX等模块。”。
面试官磊叔:“挑一个你比较熟悉的,或者印象比较深刻的一个项目具体说一说吧”。
刘秘:我比较熟悉的项目是XXXX,在这个项目中我参与/负责 了XXXX等核心模块的开发工作;对于XXX模块,我使用了XXXX等技术解决了XXXX等问题,使用了XXXX等技术完成了XXXX等功能的具体实现;其中我印象最深刻的是XXXX问题,背景是XXXX,我使用了XXXX解决了这个问题。巴拉巴拉巴拉(此处省略好多字!)...
面试官磊叔:“恩,不错,思路还不错,加强下自己的语言组织可能会更好,不要紧张,那我们来讨论下JAVA中的一些技术点吧。”。
刘秘:(心中暗喜),好的!
面试官磊叔:“说一说你对面向对象的理解吧!”。
刘秘:这个我举个例子吧; 假设我是女娲,我准备捏一些人,首先,人应该有哪些基本特征:1.有四肢 2.有大脑 3.有器官 4.有思想 我们就有了第一个模型,这就是抽象。其次,我和西方上帝是好友,我想我的这个想法能够提供给他用,但是我不想让他知道里面细节是怎么捏出来的,用的什么材料,他也不用考虑那么多,只要告诉我他要捏什么样的人就可以了。这就是封装。然后,我之后创造的人都以刚才的模型做为模板,我创造的人都有我模型的特征 这就是继承。最后,我觉得为了让人更丰富多彩,暗合阴阳之原理,可以根据模型进行删减,某些人上半身器官多突起那么一丢丢,下面少那么一丢丢。某些人,下半身多突起那么一丢丢。这就是多态。
面试官磊叔:“恩,这个例子还挺贴切的,那你能说下JAVA中是怎么实现多态这种特性的吗?”。
刘秘:Java中多态的表现是通过一下几点来体现的:首先是方法的重写和重载是Java多态性的不同表现;其次是重写是父类与子类之间多态性的一种表现,最后是重载是一个类中多态性的一种表现。
Java实现多态有三个必要条件:继承(在多态中必须存在有继承关系的子类和父类)、重写(子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。)、向上转型(在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。)。
Java中多态是依赖于动态绑定实现的,动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
面试官磊叔:“好,面向对象咱们就说到这吧。说下你在平时的开发过程中都用过哪些集合”。
刘秘:Java集合中其实包括了很多的类,大体上分为List,Set和Map,其中List,Set都继承了Collection接口。结合下图描述:

  • Collection
    Collection
  • map
    刘秘:我平时最常使用的是ArrayList和HashMap两个类。
    面试官磊叔:“简单说下HashMap的底层实现”。
    刘秘:恩恩,好的。HashMap....(此处不赘述,请移步至后面文章链接) JAVA集合:HashMap深度解析(版本对比)
    面试官磊叔:“你平时用过ConcurrentHashMap吗?”。
    刘秘:这个没有。
    面试官磊叔:“那行,咱们的面试就到这吧,你有什么需要问我的吗?”。
    刘秘:您能给我介绍一下glmapper工作室吗?

“glmapper工作室其实就是几个小伙伴自发组织起来一起学习,一起分享的一个小平台。我们比较注重对于源码的阅读,还有就是对知识体系的建立。通过分享知识,一方面是积累自己的技术,二是为了给小伙伴们提供一些优质的技术文章,来快速的了解/掌握技术点,方便的应对工作中的各种问题。小伙伴们只需要利用一些碎片时间来阅读,并且保持阅读习惯,就会得到很大的收获,还有就是(省略梦想和远方)....”