Interview

快要过年了,估计有些伙伴有了换工作的想法。换工作无非就是两个原因:一是钱没给到位;二是太累,还看不到前途。

你是哪一种呢?

小编我也有想换工作的想法,这不,苦于投简历没有面试机会。一个半路出家的,搞上了安卓开发,在公司没项目,没人带,做着一些可有可无的工作,着实没有存在感和成就感,想想就这样活一辈子就泪崩!那怎么办?人丑就要多读书嘛,多学习!敢于去冒险,去看看外面的世界!

其实只有自学,不做一些实际的项目,成长是非常慢的,自己折腾安卓也有一段时间,也该检测一下,自己学到啥程度了,面试也是和人交流学习的过程,同时把面试也作为一种考试,学生时代不就是以这种方式来学习吗?那就回归一下学生时代,找找那时的感觉!

在某聘上放了简历,偶尔有人来搭讪,简历投过去,基本上都是石沉大海,杳无音信!终于有一家小公司的HR,打来电话,发出了面试邀请,我本打算想先进行电话面试的,毕竟脸皮薄,不好意思请假。结果热心的HR说可以周六面试,我既害怕又惊喜啊,害怕你懂得,996呗。惊喜是难得有一次面试机会,而且还是在周六,不用请假!

之后几天,就努力看些基础知识,然后对照一些岗位要求进行有针对性的练习,虽然知道不一定有效,临阵磨枪嘛,然后关注了一下这家公司的产品,毕竟对人家产品有些了解,要不然面试被问起来,一脸懵逼,连人家产品都不知道,人家肯定认为你不重视,人家也不会招聘你的!

1. 前往公司

周六中午带了几份简历,就赶往这家小公司,在一座办公楼里4层。到了之后联系了HR,HR说这层没位置了,就又去了3层,感觉这家小公司,虽然才A轮,但是不差钱啊。之前也了解过,这家公司有大公司后台。然后就在一个小会议室等待面试官。整个公司里面温度很高,热的我有点紧张了,会议室是那种简易隔断出来的,一面墙是透明的,可以看到对面的员工正在工作。

2. 一面

稍微等了会,来了位小哥,拿着苹果笔记本,一看应该是搞技术的,坐下之后,让我做了下自我介绍,然后就问了一下我工作中的一些东西。然后说他要问一些安卓方向的问题,他看着他的电脑,应该是事先准备了一些问题。这个时候我就有点紧张了,因为心虚啊。一方面没有正经的项目,经验很少,另一方面由于半路出家,基础比较弱。

(1)问了下Activity的生命周期,这个我我还是知道的,就说了正常的情况。然后他有补了一句,问开启另一个Activity时,这两个Activity的生命周期,这个在『Android开发艺术探索』中有讲到,当时也看了下。但是,一紧张就拿不准了,因为没亲自动手验证,onStop在哪走的忘记了,然后尴尬的说错了,说了A先走onPause—onStop,再走B的onCreate—onStart—onResume,然后走A的onDestroy。后来又想起来了。纠正了A的onStop会在B的onResume之后再走。

(2)接下来又问了下SurfaceView,问我了解SurfaceView吗?我直接回答这块没怎么了解,然后我说我了解一点GLSurfaceView,因为我用过一点OpenGL ES,看过一点GLSurfaceView的源码,就说了一点,然后这块就过了。

(3)然后又问我了解事件分发方面吗?。。我直接回答。这块没怎么用过,工作用这块没涉及到,balabla…

(4)接着又问我,消息处理了解吗?终于问到我知道的一点源码方面的东西了。因为之前关于消息处理这块看过一些源码。就把handler消息处理机制大体说了下。然后又问了handler主要用于做什么,怎么用。之前练习时用过handler,所以回答的还行。接下来小哥又问了下,能否在一个线程下,创建多个handler,我犹豫了下,说应该可以,但是不是很确定。他让我分析,为什么可以?我说线程一个线程只能有一个looper,而每个looper又只有一个消息队列,所以多个handler也都是向这个队列中发送消息。

(5)接下来他说问一点java基础的问题,问我反射用过吗?我说没怎么用过,但是我了解一点,就简单介绍了下。可能看我基础比较差,就补了句,通过反射一个类里面所有的字段和方法都能获取吗?我说都可以。然后又聊到,wait和sleep的区别,这块答错了,好囧!然后继续聊线程,说怎么同步,我说可以用sychronized关键字,可以同步方法,也可以同步代码块,总之将知道的都说出来了。接着又问我,关于垃圾回收机制了解吗?我想这哪是java基础,问得我一脸闷逼,我说,这块没了解过,然后问java中的几种引用类型了解吗?这部分我了解过一点,说了4中引用,然后问我弱引用和软引用的区别,我说其中一个是在内存不足时会回收,具体哪个我忘记了。 (6)接下来又问了我单例模式用过吗?我说用过,然后说了几种,懒汉式,饿汉式,双重检验的,还说了个使用枚举的,小哥好像不知道使用枚举方式的单例模式,我就介绍了使用枚举方式的单例模式。紧接着又问了,快速排序的原理,这个由于之前练习过,所以比较熟 (7)最后又问了我,进程间通讯了解吗?是否使用过AIDL,我直接回来没用过,估计小哥看出我也比较菜,很多都没用过。干脆来了句,你对消息机制这部分,比较熟悉,再说一说这部分吧。然后我对这部分表述的详细了些,包括handler如何向队列中发消息,looper的遍历消息的过程,ThreadLocal也介绍了下,然后handlemessage如何能够回调handler的重写方法。 (8)最后,小哥问的也差不多了,让我问他一些问题,我就问了些关于他们公司的产品的一些信息,以及安卓开发这部分的工作内容,主要是偏向后台app那种,界面的东西相对较少。

3. 二面

小哥然后让我稍微等一下,结果我等了很久,后来是HR联系我,竟然问我是不是走了?!!我说没走,然后告诉我说安卓系统组的负责人比较忙,可能需要等一会,然后邀请另外一位技术的小哥来面试,我感觉应该是个小组长之类的。也是开始让我做下自我介绍,看到我简历上有写到jni开发,问了下jni的开发流程,我就把使用过的流程介绍了下,然后说jni还有其他的方式,不受限于固定的包名和类名,我说没用过。

紧接着,他就开始问了一些安卓方面的知识: (1)Activity的四种启动模式 (2)Service的生命周期,bind方式和start方式下的区别,然后分析service各种情况下生命周期的情况,由于弄得也不是很清楚,面试后专门学习了一下这部分,可参考上一篇文章『你是否真正了解Serveice的生命周期』. (3)service一般用于什么场景。然后举一个例子,比如上传。我说在Service中开启一个线程用于上传。小哥问我为什么需要开启线程,这块当时不知道Service也是在主线程中的,然后就没回答上 (4)然后问我异步用过吗?我说没用过,虽然在练习『第一行代码』中了解过AsyncTask,但是情急之下,也忘记了。 (5)让我设计一个Thread类,用来模拟消息机制,这个其实用UML图表达最好,但是由于不太熟悉UML,就仿照主线程说了下里面包含的主要属性和方法,并说了下主要的运行过程。 (6)小哥看我简历上的专业是机械,说你自学的java啊,我说由于工作需要,就自学了一点编程,然后让我说一说面向对象吧,我就说了下封装,继承,和多态

4. 三面

这时候进来一位看着比较资深的面试官,年龄比之前的两位大,大概是他们的领导吧!进来之后小哥跟他说了下,面试的情况,说面试的问题基本问完了,然后走了。本来这一轮应该是他们两个一起面试,但是由于这位资深的面试官比较忙就分开面试我了。

这位面试官有气场,而且说话比较干脆利落。先让我自我介绍下(已第三次自我介绍。),然后问了些我做过的一些东西,然后给我出了一道数据结构题『单向链表,长度未知,要求找到中间节点』,开始我说最笨的方式就是遍历一次找到总长度,然后再遍历一次,遍历总长度的一半,就找到了。也知道这种方式肯定不是他想要的方式。果然面试官说要求只能遍历一次,再想想,然后给我5分钟时间,他出去一下,后来看我能不能想到方式。我就一直想,如何遍历一次取出中间节点,然后想着借助其他数据结构实现。想着用数组在遍历时拿到每个数据,这样,利用数组遍历的特性,直接能够拿到中间节点元素。面试官回来时,我就说了我的思路,但是面试官说这也不是他想要的方式,面试回去后查了下,原来通过每次遍历2个元素方式,这点确实没想到。接下来,他说话比较直接,说我的基础比较弱,我说没关系,然后让我说下,进程和线程的区别,说了些皮毛的区别,他说没学过操作系统吧。我说没学过,只是平时看看博客了解一点而已。

之后和我聊了聊我问什么转行,不再搞机械,我就说了说的我想法。之后让我说下我的优缺点,然后基本就差不多了,然后问我有什么想问他的,我问了些关于安卓这部分的业务相关的。然后他跟我说了很多,有关于他们公司的业务战略,以及之后的发展。目前处于发展阶段,会很忙,问我能不能接受996的方式,之后就没多说什么了,他出去了,让我再想想数据结构那道题,叫我不要上网查。

5. 四面

这一轮面试完。HR跟我说需要再等一下,后面的领导要跟我聊一聊。过了一会一位年龄稍大的面试官来了。打了下招呼,然后坐下,让我做下自我介绍。这位面试官应该不是搞技术的,可能是做产品相关的,主要问了下我们公司目前所做的产品情况,可能和他们的产品有些交集。之后没有过的问题,就让我说了下我的优缺点。这一轮时间相对较短。

6. 五面

这一轮聊完,HR说还有一位技术领导需要聊一聊,由于他比较忙,所以她先和我聊一聊,关于他们的业务以及各个部门情况。他问我的一些情况,目前所在公司的待遇,期望的薪资以及我为什么离职。

7. 六面

HR说后面还有一个技术领导要和我聊一下,可能会等一会,我说可以。等了有一会,一位瘦高的小哥进来了,打了招呼后就开始面试了,让我做下自我介绍,他在一直看简历。看出来这位小哥应该比较牛,很有气场,我在说的过程中,他不知道的点,会直接打断我,让我解释下。然后就我的工作,问了里面的一些细节,虽然他不是做这部分的工作,但是通过看简历和我的叙述,能迅速抓到关键点,并能够和我讨论,着重考察我思考问题的方式以及我在工作中承担当的内容以及我解决了哪些问题,最后问了我有哪些长处,然后又问我有没有想问的问题,之后面试就完全结束了,并告诉我结果过几天HR会通知我!

8. 总结

这一次虽然是一家小公司,但是招聘上还是蛮重视的,可能公司的招聘流程有规定。前前后后被很多面试官面试,从下午2点多一直到7点多,后面几轮感觉大脑有点转不动了,就是自我介绍这一项就有点恶心了。。一共介绍了n多次,关键是自己资历很浅,外加技术不是很好,介绍有多多少少有点虚。下面谈一谈这次面试感受和收获吧!

(1)其实这次面试前面主要是技术面试,发现自己技术上欠缺很多,很多仅是知道概念,但是真正说的时候很难说清楚,这就是理论不扎实。另外,自己没有真正意义上的安卓方面的项目,做的工作也只是和安卓相关,招聘时有些公司会主要看你的项目,和他们的业务的相关性,人家是要能干活的特别是对于社招来说,更重要的是,如果你做一些项目,很多知识不能很好地掌握住,只有在项目中不断练习和总结,才能成长的更快!

(2)对于自己经验和技术比较一般的情况下,有些知识点可能没有掌握,但是在面试过程中一定要有自己的思考,最好能做到举一反三。如果思考过后还是得不出答案,那么就直接告诉面试官自己不知道这部分,没必要隐瞒,因为即使你隐瞒,侥幸被招聘进去了,如果与岗位职能不匹配,工作时也能够被发现,自己工作压力也非常大。当然,面试的过程你可以把面试官往自己会的方向拉,这也是展示自己的一个小窍门吧。面试过程中不可能保证问到的问题都是你会的(大神除外),会的就要好好把握,不会的也要坦然对待,面试过程也是学习交流的过程,过后再积极去补充自己不会的部分,争取下次面试之前弄懂!

(3)因为是初次面试,也没想到能够面试这么多轮,预期是可能技术面过不了关,不是对自己不自信,而是现在要求确实是高了,自己也没学到位。这样,后面的面试出现了一些措手不及的情况,比如说说自己的优缺点,擅长以及薪资方面的要求。所谓优缺点个人觉得是不是对自己的分析,而是要结合公司的要求来回答,包括自己擅长的东西,不要就自己本身的优缺点来回答。还有薪资情况,薪资上不要要的过低,因为后面即使这家公司要你了,也顶多给你你说的范围最高的工资,这样后面你想去,但很可能因为工资低而去不上,对自己很不利。即使你要高了,如果这家公司要你了,HR会和你商量薪资情况的,所以在面试前一定要想好自己的薪资的一个大致范围。

(4)面试过程中有时面试官会着重考察你的思考问题的能力,一方面要求你简历上写东西要真的熟悉,所做的项目很熟悉,至少你做过的不会被面试官问住,因为这你做的东西,要是被问住,略显尴尬。另一方面,有些问题或者知识点,可能没有遇到过,但是要学会根据以往学的内容进行深入思考,思考的能力在工作中是很重要的,这一点是面试官看中,特别是越到后面的面试越有体会,后面可能是一些领导,是比较看重思考能力的。

(5)既然是社招,HR肯定会问到你离职的原因,这点就是要见仁见智了,即使你的上家公司怎么不好,也不要去抱怨,然后告诉HR,因为每个公司都可能有它管理上的一些问题或者其他问题,可以从自身方面出发分析,给出一些这家公司可能需要的理由!

(6)面试最后一个环节,面试官一般会让你提问,问一些问题,这个时候不要害羞偶,可以大胆的去问,当然最好问一些比较有质量的问题,这事先需要做一些功课,一方面可能会加深面试官对你的印象,另一方面也是个机会了解你的你未来的工作环境,该公司的业务等。

总之,这次面试收获颇丰,同时也意识到自己各个方面还是一定的差距,要想找到的一份合适的工作,还是加油继续努力!

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦