每晚10点,捕获技术思考和创业资源洞察
文|洪生鹏 编辑|静子
面试时,难免会遇到一些我们不知如何回答的问题,特别是面试技术岗位,由于技术涉及知识点较多,即使我们在去面试前就已经做了准备,也难保不会发生。
要是在面试时遇到问题回答不上来的时候,该怎么办?
在面试过程中碰到不懂得回答的问题,这时要保持冷静,千万不能自乱阵脚,稍微放平常心一点,不要过于以回答问题为导向,不要像背书一样回答问题,很容易回答了问题反而被扣分了。
有的应聘者明明不懂,却非要硬着头皮诉说一番,企图掩饰过去,殊不知这是下策,面试官很可能因此继续追问下去,最后只会出洋相。即使面试官不追问,他心中也有数。
所以在遇到问题时,我们要是通过思考,要是仍然没有头绪,这个时候你直接跟面试官说不会,反而可以给面试官一个比较实在的印象。
有的应聘者在遇到问题有多种方案时,容易表现犹豫不决,个人觉得,这种做法并不明智。
刚毕业找工作时,我也是这种情况,有时候能想到解决方法,由于顾虑经验不足,我就不敢多阐述。后来当我自己成了面试官后,我发现这种做法并不明智。
面试是一种沟通过程,我们可以尝试从不同方案回答问题,如果问题有多种解决方案,我们可以因此阐述其利弊。把面试当做一次探讨和沟通,即使一时没完全给出答案,也可以和面试官探讨,阐述我们想法和思路。
很多时候面试官的问题只是为了考察我们对某个知识点掌握情况,只要你答到了,哪怕题目没有完全解开也没有关系。有时候,你的想法可能面试官也没有料到,他会和你一起探讨,探讨的过程当中,也一样能够体现我们的价值。
如果面试官问的并不是一个问题或者算法的解决思路,而是一个具体的问题,而这个问题你又刚好不知道,那该怎么办呢?
这种情况的确比较棘手,因为我们确实不知道,也没有办法做到旁敲侧击了。实在不知道或者想不起来了,怎么办呢?
我们可以先把自己知道的说出来,对于不知道的或者比较模糊的最好别说。实在是想不起来也没有关系,并不意味着没有回旋的余地。我们可以这样阐述,这个知识点确实是自己没有掌握深入,但我对某项技术或是某个知识点比较熟悉。
从事java开发的应该知道java有个垃圾回收机制。要是谈到内存优化,要是面试官问“对什么东西”进行回收,要是只是简单回答对没有用的对象进行回收。按道理来说,这并没有错,只是这并不是面试官问这个问题的初衷。要是能更进一步分析,那就更好了,譬如这样回答,GC操作的对象分为:通过可达性分析法无法搜索到的对象和可以搜索到的对象。对于搜索不到的方法进行标记。从root搜索不到,而且经过第一次标记、清理后,仍然没有复活的对象。
对于用可达性分析法搜索不到的对象,GC并不一定会回收该对象。要完全回收一个对象,至少需要经过两次标记的过程。把问题具体化了一些,对类似这样的对象进行回收,相信能为这次面试加分。
虽然问题答不上来,但是你知道这个技术或者这个问题是什么方向的。最后你给了另一种解决方案,同样能够解决问题。
如果我们对这个问题一知半解,可以尝试换另外的思路来思考。在有限的时间里,想办法从别的角度来看待问题,分析和解决问题。
面试的成功很可能就决定于你事前的准备工作是否到位,建议应试者在面试过程中一定要镇静自如、沉着应对,最好预先了解一下面试过程并做必要的准备工作防止尴尬局面的出现。为了预防会出现有不能回答的问题,在去面试前提早做好准备,预想一下面试某个岗位大致上会遇到哪些问题,这样你在面试时心理就更有底气了。
作为一名Android 开发者,如何在面试中脱颖而出,找到自己心仪的工作?个人认为需要两项技能:
扎实的技术基础,有技术追求和工作激情 ;良好的沟通能力和协作技能。
简单说,就是技术水平和沟通能力。其中技术始终是面试成败的决定因素,技术掌握到什么程度才能相对轻松地通过面试呢?
一般来说,一场Android面试内容不太可能全是Android的问题,也会涉及到与编程基础相关的问题。譬如数据结构、算法和常见的设计模式,设计模式比如单例模式、工厂模式、策略模式等。有的人认为数据结构在工作中不常用到,但还是要稍微了解下,能够熟练掌握那就更好了。
在工作中不断提高自身技能,提高自身的竞争力。如何提高自身的竞争力,这里有几点建议可以参考:
1、形成个人知识体系
有时候我们对知识积累往往相对比较零散,这就需要我们对齐进行思考总结,从而形成自己的理解,围绕自己的职业目标,有意地获取和提高自己的知识范围,塑造有利于自己职业生涯的知识体系。
对于Android开发,基础知识要重视。比如App是如何启动的,Activity的启动模式、Service的启动模式、消息机制等,类似这样的问题很多。这类知识点,我们在项目实际开发过程中可能不会去太在意,这会导致一个问题,那就是开发应用没问题,但要是我们辞职了到其他单位面试,要是在面试时面试官只要稍微问下细节或者特殊情况,可能就接不住了,会被面试官认为基础不扎实或是不够深入。所以平时开发中还是得重视。
2、形成个人方法体系
著名的PDCA循环(Plan\Do\Check\Action),也称戴明环。PDCA是为了提高质量的管理思想,是一套科学程序,注重管理活动的全部过程。
“P”是PLAN:制定目标和计划
《礼记·中庸》提到:“凡事预则立,不预则废”,说明了目标和计划的重要性。
有时候,我们是走一步算一步,缺少目标的定制和计划,认为制定目标这个很虚,没有必要,也就缺少对目标的实施,到底完成了多少,实现了多少,还是那些未实现,是什么原因导致的,都无从知晓。
“D”是DO:开始行动,实施计划
很多人制定了计划,可以说,计划是相当完美,可总是三分钟热度,一时的激情过后就没了动力了。
“C”是CHECK,对行动的结果进行检验
行动了,做了,要有个结果,对其结果是否满意,思考下次方案是否可以改进等。我们常说,“言必行,行必果”“行胜于言”。说的都是行动的力量!要是把自己的理想挂在嘴边,一直在用嘴巴说,我要成功,我要达到我的目标,可就是没有行动!口号谁都会喊,可是光喊口号而没有行动,怎么会有结果呢。
“A”是ACTION.纠正错误,调整方向.其实也就是总结、完善的意思
工作中,小到日报,周报,大到月总结,季总结等。有总结我们才能更进一步把工作做得更好。平时要要注意积累,比如写博客等,这样有助于我们对知识点更好的梳理和掌握。
3、明确的职业目标:对自己的职业生涯应该有个目标
阶段性总结, 制定合理计划,实现阶段性目标。那么我们平时如何积累面试中需要的技术,阅读源码是一个不错的选择,因为面试中的很多问题我们都可以从源码中找答案,其次要主动学习平时工作中遇不到的一些技术,由于工作的原因,我们不可能通过公司的项目来掌握到Android中的重要技术,尤其是开发一些规模不大的项目,这个时候需要我们主动去学习。
比如View的绘制流程、事件分发、消息队列、AIDL原理、Binder机制等。这类知识点,需要我们不断去实践探索,才能更好地解决问题。