面试中所遇到的那些坑

作者: PossibleZero | 来源:发表于2016-12-19 10:48 被阅读9248次

不是怎么喜欢写开发类的文章,始终认为这些东西不应该由程序员来写,更加倾向于写一些感受以及想法可是慢慢的发现有些东西,你不写是不行的,好吧,那我就跟随大局也来谈谈我的面试经验以及各方面的看法吧。

以下的面试经验主要针对于3年~5年左右android开发经验中所遇到的问题,这些是我自身面试中的经验以及所遇到的坑,可能下面的内容不适合于所有人,不过还是希望能给正在面试中的你有所启发吧。

背景介绍:

今年可能是互联网情形最差的一年(明年更加不好说),往年都有个习惯,每到年底都要出去试试,于是就跟往年一样出去试试,可惜结果并没有想象中的那么理想,告诫下所有从业者,如果是迫于无奈,一定要骑驴找马,现在对于岗位的技能要求是越来越高,同样的能力薪资方面却给的的越来越低,公司更倾向于招一个更顶尖的人才。

正文内容:

好啦,开始讲正文了,大致描述下近期三段面试经历,一个是某度,一个是某医疗公司,一个是某 上市公司。

某度,去了以后才发现是做基于各类SDK的开发,用于行业国际化,后期拓展到整个产品线上的;能力方面:是想找一个架构能力非常强,或者源码分析能力非常强,或者coding能力非常强的一个工程师,第二家公司是想找一个资深架构师或者是项目leader;第三家,朋友所在的公司,同样也是想找个资深程序员......

某度面试知识点整理,(以下只是整理个大致方向,具体内容请自己自行查找):

1、主要是对象创建,堆内存、栈内存,数据引用地址是否发生变化等问题。

2、以及Gc Root的相关概念,以及回收机制内存泄露的检测,考察了内存泄露的所有相关原理,里面包括,单例、内部类、匿名内部类,静态内部类,造成内存泄露的原因和解决方案;内存泄露的检测方案,主要是MAT,以及查看等,另外像图片、网络优化处理方面的优化问题等等;

3、同时还考察了有线程池的ThreadPoolExecutor,底层实现机制,以及在引用线程池,如何实现线程之间的调度机制。

4、java方面考察的比较多的还有hashmap,比如hash碰撞,产生碰撞的原因,如何避免hash碰撞;数组和链表之间的关系,如何实现存储等操作。

5、同时还考察的有Handler实现机制,不是简单的那些被市面问烂的轮询方面内容,包含贯穿整个生命周期的启动机制,至于复杂的内容,自行查找;

6、常用的设计模式,以及设计模式在实战中的应用也是少不了的。

7、另外还有动画的相关内容,主要是view动画以及属性动画的比较,以及动画所引起的泄露问题;还有事件分发机制在实际中的问题等;

8、多线程问题,线程同步问题,以及多线程直接的调度问题;进程直接的通讯方式。

9、项目的架构思路,以及分析解决机制。

10、另外还有常用的三方库,以及三方库的实现机制以及原理。

11、应用的启动机制,activitythread等...

第一家公司

因为个人时间紧急,申请不进行笔试答题,但是手写代码、思路等都是必不可少的,某度前前后后差不多面了两个半小时,除了ThreadPoolExecutor底层实现机制实在是想不起来其他都答出来了,整体来讲没有毛病,不过最后再攀谈的时候,如之前所说的那样,想要一个非常非常突出的人,而不是一个什么都懂,又什么都不精通的人,所以深度是非常的重要,毕竟是面一个高级研发做SDK方面的;一般的能力还是不符合,在面试过程中面试官反复问我你有什么非常擅长的领域没有,也足以看出是想多给我些机会,可惜自己没有把握住,而且这些只是一面,二轮面试是基于sdk架构层面的,更多的是牵涉到架构思路,整个项目的搭建思路、以及各类设计模式的运用方面了,这里就不再诉说了,有兴趣的自行研究下。

第二家公司,回答的内容就比较有趣了,

基本上可以这么说,我把我所能说的都说了,比如我用的最新的Rxjava,retrofit,okhttp,以及现在比较火的,Reactnative,databinding,性能优化,开源架构思路,以及各类开发的模式,mvp,mvc,mvvm等,比较实现等思路,而且自认为深度广度还好,只是在问道内存泄露问题上,关于内部类,静态内部类,匿名内部类造成的内存泄露忽略了;而且最后犯了一个比较重大的严重问题,算法一般的我竟然夸大海口说,算法就是找到规律、找出原理然后用代码表现出来,面试管当场出了一个算法,思考半天,给了一个解答思路,但是效果一般;而且还提问了一些关于gc回收的调度算法,没接触过只能作罢;最后感觉自身能力有限,后面要求再去面试,感觉自身驾驭不了,最后也就不了了之了。

第三家公司

哎,工作这么久,这是最被动的一次;怎么说呢,问的知识很多都是java基础,可能一直沉浸于android的世界,反而把一些基础性知识给忽略了,只知道有这个东西,具体原理都忘记了,而且在面试的时候还发现一个问题,就是一定一定要把你写的知识点一定要讲明白了,我们公司的消息部分是自己做的,但是这部分代码我并没有仔细看过,于是面试管问了消息部分的某个细节问题,当时猛然没有想出来,结果可想而知;还有就是你实现的功能,你单纯会做是不行的,一定要把原理性的内容说出来;

面试官有时候问的一些问题如果跟你的思路不太一样的话,一定要据理力争,不过前提是你要把功能和原理想明白了,保证能够实现的了才可以,不然最后坑爹的肯定是你自己。其中还问的有surfaceview实现机制,因为写过的代码间隔好久了,突然被问起来,竟然大脑短路了...面完后已经知道不行了,基本功不能丢,原理性的东西一定要勤于总结...

综述

上面所说的内容都只是一面,某度面了两个半小时,第二家一个半小时,第三家一个多小时;总的来说,某度的面试官技术实力确实最给力;现在的面试内容确实是比之前要难了好多,无论是架构能力,还是底层实现能力,甚至是基本能力,现在面试单纯知道原理是不太行的,一定要答得非常有深度,非常了解才行;而且基本功这东西可能在日常开发中感觉不出来,不过这些都是潜移默化影响着你,忘记的话一定要补习上来的,就像最后一个面试官问我,一些最常用的基础性的东西怎么可能忘记呢;事实证明当你在面的级别越高时,越是这种最最基本的东西要熟烂于心,与此同时一定要提升自己的深度以及广度,几次面试都是在没有怎么准备的情况进行的,其实,机会就那么多次,你不珍惜,只能怪你自己,要珍惜自己的每一次机会,不能太大意了,这年头你单纯会敲代码是不行的,需要你把原理性的东西,揉碎了,记在自己的脑海里才行。

有人可能会说,我要是面试管,我也能把对方问倒,确实是这样,不过现在你是一个普通的面试者,就不要想太多了。

小建议

最后几个建议,JNI/NDK,这个有兴趣的好好学习学习,好多公司已经开始重视这个,跳槽不要太频繁,通过好多猎头的了解,13年以后毕业的研发工程师,跳槽的频率不是一般的高,而且技术实力跟11年之前的相比,差了不是一两个数量级,还有一个是关于现在的React native,或者是react这只是一个小的方向,不会影响安卓原生大的趋势,就如同一个小语种一样,需要学会,不过不建议投入太大的精力;深度和广度两个都不能丢弃,基础更加是重中之重,设计模式,算法,数据结构也不能丢弃,android的路还很长,还需要好好努力.....

回来复习的时候,猛然发现一个网站,无论是最新的开源技术,还是数据结构算法,已经最新的市场行情分析,都感觉蛮不错的,同时也有很多开源项目,对我后来的提升有很大帮助;好东西不敢私藏,在这里分享给大家。

HOHO,上面是广告内容,具体地址在下面,不过拍胸脯保证,内容还是非常非常赞的。

好东西一:Android Blog 周刊 

好东西二:开源项目

相关文章

网友评论

  • 萌萌的白天:https://www.androidweekly.cn/ 这个周报也不错 对于android的看法很中肯 所以我在狂啃android的内核包括 Linux内核 觉得是非常的经典 表示很多业务层的东西 架构 其实在内核理解好了 堆栈 数据结构 表示其实解决方案真的非常多
  • dd2f56d130c2:不错不错,收藏了。

    推荐下,源码圈 300 胖友的书单整理:http://t.cn/R0Uflld


  • 大数据修行:膜拜大牛了
  • 锐心凌志:在学校大一下开始高点android到现在大三。感觉依然处于懵懂状态。马上要找工作了发现,现在android又不像前两年好了。。。。哎
  • xiaoguang1993:博主你好,你最后分享的两个东西,我这边点击显示访问地址有误,不知是什么情况
    PossibleZero:室友回去看下服务器,估计是服务器有点问题,不好意思哈。
  • edbc50b0dcf0:问楼主:上面说道越来越重视JNI,想知道要学习C或C++么,还是知道懂得JNI调用就可以了
    PossibleZero:一般的知识点还是需要了解,调用这方面更是不可缺的,毕竟C、C++是基础,多学没有坏处
  • Allen_tong:最近也在看mvp rxjava retrofit这些东西,想着年后跳槽bat,看了你的心得,有点怂了,像刚开始说的某度的面试内容,基础的hashmap还有碰撞这些感觉这些基本都不会深入到这些内容,数据结构,算法这些内容平时也还是要多关注下,刚买的算法4还没看过,惭愧,android之路任重而道远。。。
    PossibleZero:@Allen_tong 一起努力吧,我这也是想跳bat的面完后瞬间感觉路还遥远,不过也是分部门吧,有些还是挺容易过的
  • 兰兰笑笑生:找工作不易,重在坚持。
    不过我想问下,面试过程对于android框架原理(比如Activity创建流程,XX类的实现原理,源码)的要求高吗? 需要专门学习哪几部分么?
    PossibleZero:@南蛮熊猫 主要还是看你面的公司吧,每家公司要求不尽相同,没事儿多翻下源码会有很大帮助的
  • 02744cada7f7:感谢分享!差不多大点的公司面试都如上这些,最近一次中软电话面试问得我是哑口无言,做android开发两年没有深入,没有研究过源码原理,包括常用的一些东西都是一知半解,所以跳槽的打算不敢再有,当然更不敢乞求安逸,只希望能更多的学习,这样才能有出路。自己的毛病只有广度,没有深度,这是非常可怕的问题,得改,改,改!
    PossibleZero:@群里说 嘿嘿好好加油就好,外包类的公司不建议去了,以后很多问题的
  • c78d6321def3:有个约面试官的网站叫面易,里面有BAT的面试官,我之前约过一个百度的面试官,效果还不错,很多面试答不出的问题,面试官都给了详细的解题思路
    PossibleZero:@Ruichard 嘿嘿,其实他们说的指导意见,我们都清楚,没有去bat面过的可以咨询下,大致的点还是要了解的
  • jeffiano:个人感觉很多情况下日常的开发工作用不到很深的技术,所以久而久之就放松了警惕,不再去细究深层次的东西。可能是工作内容本身太初级的原因,一点个人感悟。
    PossibleZero:@jeffiano 确实是,一直在做业务,技术能力很难提升的
  • lightning_shuo:就默默地看着大神不说话😅
    PossibleZero:@lightning_shuo :joy::joy::joy:
  • 764ddf87f832:为了在这个社会上生活的好一点今年踏上了Android开发之路,一览博主一文,尼玛,这条路,无尽无头
    PossibleZero:@BDWen :joy::joy::joy:java是深坑入者需慎重
  • bdeff2ff1ca0:同感,多谢作者的总结!!
    PossibleZero:@dracula9 对你有帮助就好
  • b578703a6efb:我一年安卓,是个菜逼
    PossibleZero:@生活就像海洋2013 都是时间磨出来的,你到时候肯定比我要强的,加油
  • 王小小胖:我也做了近3年的Android了,确实感觉有些技不如人了!
    PossibleZero:@王小小胖 好好加油,哪块儿不行补哪块儿
  • 461ca3d0186f:大神的世界 我不懂
    PossibleZero:@隔壁de老王 :joy::joy::joy:
  • 7d356af0034c:看完撸主的文章就默默的把辞职报告撕了 :smiley:
    PossibleZero:@johnyyc 哈哈撕的漂亮
  • 新新格子君:很有帮助
    PossibleZero:@新新格子君 😬😬有帮助就好
  • dongbingliu:面试的题目都好难啊!
    PossibleZero:@DB_Liu 可能跟面的级别有关系吧,普通的应该还好
  • 萌萌的白天:不错 非常有帮助 。正好合适
    PossibleZero:@萌萌的白天 😬😬谢谢
  • 字字珠玑:感谢作者最后推荐的两个网站。
    作为一个10月份裸辞的人说两句,今年互联网环境肯定是无法跟之前万众创业的时候比了,并且现在不缺初级程序员,缺的是高级程序员,能够切实解决问题的人。还有一个就是年底了,真正招人的公司不多,很多时候也会面试,但是除非遇到特别好的人,一般不会招。
    PossibleZero:@字字珠玑 果然是过来人呐,这阶段打着招人旗号面试的确实有些可恶,不过也只能说技不如人,能力强的话公司也是拼命要的
  • 柴泽建_Jack:「简单的那些被市面问烂的轮询方面内容」这个内容是指什么?
    柴泽建_Jack:@王小小胖 奥,多谢
    王小小胖:@柴泽建_Jack handler looper message
    PossibleZero:@柴泽建_Jack 这些网上挺多的就发消息looper轮询这些简单的内容阐述,因为该问题问的太多好多人都背下来了
  • 开发者头条_程序员必装的App:感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/fu9c90 欢迎点赞支持!
    欢迎订阅《大圣归来学Android》:https://toutiao.io/subjects/12120
  • 墨田:大神级别的人物
    PossibleZero:@墨田 没有啦,还有好多要学习的
  • GrayStar天:感谢分享
    PossibleZero:@阿拉Ray 😬😬对你有帮助就好

本文标题:面试中所遇到的那些坑

本文链接:https://www.haomeiwen.com/subject/vkromttx.html