2018Android面试经历

作者: 一生很短总该留些什么 | 来源:发表于2018-03-16 21:30 被阅读2128次

    面试中遇到的一些问题

    Q1:ListView和RecyclerView的使用,就问我它们有什么区别?

    Q2:既然RecyclerView在很多方面能取代ListView,Google为什么没把ListView划上一条过时的横线?

    Q3:你用过MVP,那你知道Dagger2吧,介绍下吧?

    Q4:HashMap的内部实现原理?

    Q5:Activity生命周期,有哪些启动模式,以及应用场景?

    Q6:你用过AsyncTask,那你跟我说说AsyncTask的内部实现原理?

    Q7:AsyncTask内部维护了一个线程池,是串行还是并行,怎么维护的?

    Q8:那你说说线程池的四种初始化吧?

    Q9:你用过MD,你知道怎么定义一个Behavior吗?

    Q10:RecyclerView的拖拽怎么实现的?

    Q11:写一个SingTop,有哪三个条件?

    Q12:一个按升序排列好的数组int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);

    Q13:如何向一个数据库具有int类型A,B,C,D四列的表中随机插入10000条数据?如何按升序取出A列中前10个数?

    Q14:service两种启动方式有什么区别?

    Q15:说说三级缓存、Handler机制 ?


    如果您有多余的时间,可以聆听下我的故事

            从毕业到现在面试也就那么几家公司,单前几次都比较顺利,在面到第三家时都给到了我offer!前面两次找工作,没考虑到以后需要什么,自己的对未来的规划是什么,只要有份工作,工资符合自己的要求就行!所以在智联招聘上选好工资范围,就一顿海投,做等面试电话!

          做两快三年的Android开发,工作的任务也就是一些界面的编写,RecyclerView的简单使用,网络框架也是别人封装好的直接用,再就是集成些第三方的分享、支付什么的!技术上的提升可以说根本没有,和工作一年左右的人,比起来就多几个项目优势!所以这次出来找工作还期望15K,说起来心里很慌!有哪些原因呢?

    1、小公司要求不高,自己也抱着只要能做出功能的态度

    2、对行业趋势把握不准,没有未来规划(所谓混吃等死)

    3、对自己的工作不感兴趣,上班有空闲时间也不会去深入学习

             再来说说这次找工作面试的一些经历和感想!这次面试大大小小面试了十多家!依我自己在简历上写的几个商城类APP的工作经验,在智联和拉钩上也只有小公司能叫我去面试!(所以说技术深度很重要)

            前面两次的由于面试没怎么准备,直接over肯定是没问题的!第一家一个小姐姐把我问得n脸懵逼(一个屌丝程序猴和妹子聊天就紧张,心跳加速,口干舌燥,说话结巴)!她首先让我自我介绍一下,可脑袋一下像短路了一样!就说:“你知道的程序员表达能力差,嗯。。。嗯。。。你看简历吧!”她直接一脸无语!

            接着她就看到我简历有(Q1)ListView和RecyclerView的使用,就问我它们有什么区别?我也就只能简单的答答RecyclerView怎么使用ListView怎么使用!然后她又问我(Q2)既然RecyclerView在很多方面能取代ListView,Google为什么没把ListView划上一条过时的横线?我当然是不知道怎么回答,然后就请教她,然后她就告诉我ListView采用的是RecyclerBin的回收机制在一些轻量级的List显示时效率更高!顿时我就服气了!

    后来又问我(Q3)你用过MVP,那你知道Dagger2吧,介绍下吧?我又是一脸懵逼!这次面试就这样被个妹子给干趴了!从这回去我就开始回去看ListView和RecyclerView的区别、缓存机制、Android MVP+Retrofit+dagger2+RxAndroid框架等等!

             第二天又去一家小公司,这次是我用“不知道”回答的最多的一次!(但我从容面对这样的结果,因为自己真的很菜)面试一上来也是让我做自我介绍,由于这次做了准备,回答起来没那么难!后来他开始问我技术问题(Q4)HashMap的内部实现原理?我想了下只能说“不知道”!接下来就问我(Q5)Activity生命周期,有哪些启动模式,以及应用场景?这个还是难不倒我的!问到(Q6)你用过AsyncTask,那你跟我说说AsyncTask的内部实现原理?因为我昨晚看了下,就开始跟他说首先我说说它的出现是为了解决在子线程中做了耗时操作后需要回到UI线程去更新这样一种情景,然后就开始准备说它的四个方法(doInBackground(Params...) 、publishProgress(Progress...)、onProgressUpdate(Progress...)、onPostExecute(Result)),他立刻就打断我了,说我问的是内部原理,(Q7)内部维护了一个线程池,是串行还是并行,怎么维护的?这一问,我又是一脸懵逼,只能说“不知道”!他也很无奈,又问(Q8那你说说线程池的四种初始化吧?我的第一反应是看都没看过,一句“不知道”又让他无语了!此时的我死猪已经不怕开水烫了!Q9你用过MD,你知道怎么定义一个Behavior吗?“不知道”Q10RecyclerView的拖拽怎么实现的?“不知道”!最后一曲凉凉送给自己!

    凉凉

         接下来的几家公司都是创业型的小公司,面试的人都是一些不懂Android开发的或者是会一点点!首先上来就是自我介绍,这我都说了好多遍了,我15年毕业于哪里哪里,从毕业一直到现在从事的是Android开发的工作,做过什么什么类型的项目!大学学的是软件工程,学过Android、计算机网络、嵌入式、数据库、C#等等!(一顿操作猛如虎,哈哈。。。)但是这些创业型的小公司都要求你有能独立完成APP的能力,然后就跟你说什么公司背景有多牛呀,有期权股份呀,我们团队怎么优秀,这个平台能提升你很多能力呀,但是我们刚开始呀不会给你开太高的工资,但我们年终业绩好的话可以给你发4~6个月薪资给你做奖金!可能在这期间要加加班呀什么的!

           在这些中有一家都面试到了和项目经理谈了,自我感觉和技术总结聊得很不错,和项目经理也谈了自己未来的规划,先从Android入手技术深入,然后再自学H5前端,再像java后台靠拢做一个全栈工程师!项目经理也说你过来我们这有很好java后台资源,而且Android会交給一个人来做,未来业务发展也会加入H5,我们这能给你提供这样的一个平台!最后在某些方面我们的目标达成一致了,行先这样,我们再商量下,你回去等通知吧!结果我回去了,加了技术总监的微信,傻傻等了一天,啥也没等来!(忠告:基本叫你回去等通知的都是没戏!)

    当然这些公司中也有向我抛出橄榄枝的,有一家给我试用8k(不交社保),转正10K,大小周!一不交社保,二是大小周,三是那没我想要的,我思来想去,辗转反侧,以不能把自己贱卖为由,我果断谢绝了!

           比起套路,我更喜欢那些能直白告诉我结果的人!在去一家稍微大点的公司,首轮就是笔试!我笔试有一道算法题和数据库的题做不出,当时就知道这次没戏了!但很感谢面试我的那哥们,和我一样15年毕业的,但很牛逼!他拿着我的笔试答卷,Q11首先是写一个SingTop,那哥们就问我,单例要注意些什么?我首先回答的到的同步问题,再说构造方法私有,可我忘了一点静态调用!那哥们就给我一条条理出来1、构造函数私有  2、含有一个该类的静态私有对象  3、有一个静态的公有的函数用于创建或获取它本身的静态私有对象  4、其次才是考虑线程同步!Q12一个按升序排列好的数组int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);                                              

    我给出的答案是:                                                                                                                         

    1、先用二分法排除比x大的数,得到pos                                                                                          

    2、再从0到pos 通过两层for循环通过一个数与剩下的所有数来相加,等于x的时候break循环           

    那哥们就开始给我分析,首先第1点想法就是错的,应为给出的数组中有负数,负数+正数有可能得到中间的那个数,再则它这靠得是一个双向逼近的算法!接下来是一个数据库题目Q13如何向一个数据库具有int类型A,B,C,D四列的表中随机插入10000条数据?如何按升序取出A列中前10个数?这道题我没答,我以为考的是数据库操作的基本语法!后来那哥们慢慢跟我分析这道题的考点在哪?他说:“这些语法我也不记得,但是像我们这样具有两年多工作经验的人百度一下也是能做得出的,但是这里考的不是基本语法,数据库其实也就是一个文件,一个具有固定封装特定语法操作的文件,既然是文件读写就要考虑到效率问题!在数据库中提高效率用到什么,是事务!如果一条条插入,其实每次插入都会维持一个事务,也就相当于文件的打开和关闭,10000次的打开和关闭是很消耗性能的,所以要在插入前使用BEGIN TRANSACTION开启事务,再10000条数据插入完成时用END TRANSACTION结束事务,这样就相对于文件只打开了一次,10000条批量操作完后,再关闭文件!”下面一题是Q14service两种启动方式有什么区别?我回答得很简单!他就直接说“面试这笔试也是很重要的一部分,简历大家可以随便写,但是一些技术水平在笔试这是有所体现的,所以在我这笔试这关是没有通过的!”这个时候我挺服气的,毕竟是自己准备不好。后来那哥们就跟我说:“这面试题该背的该记得还是要记,花个两三天或者一周去准备,对自己多要一两K也是很值得的,所以该辛苦的还是要辛苦下!”我挺感谢这位哥们的,也挺喜欢和这样率直随意的人打交道!

           最后经过两个星期的面试,找了一家符合自己发展方向做智能硬件的公司!经过这段时间的面试,懂得了技术深度的重要性,还有职业规划的重要性!目前个人认为纯App开发很容易被取代,我个人的职业规划1、以Android技术为基础深入,再学前端,再扩展到Java后台,做到一个全栈工程师  2、向Android智能硬件,NDK开发转型,因为我大学搞过嵌入式,有些基础,这一行门槛稍微高些不容易被取代!目前来说自己是打算朝着第二点去发展了!


    感谢您陪同我一起进步!

    相关文章

      网友评论

      • c20a2d73d2dc:哇,哥们儿。真的和我之前找工作的感觉好像。不过我的工作经验要多一点,了解的多一些。我也觉得很多问题用不上,但能体现对整个知识了解的程度,很多时候甚至能加速解决问题的进度。可惜太晚看到这篇文章了,能加个qq啥的么,搞个什么小群一起交流学习新知识什么的,我的圈子太窄了,以前的那种大群又太只会闲聊没啥用。
        一生很短总该留些什么:@Zzzzzz_7c1f 同是天涯沦落人呀😂
      • bill_jean:一模一样的经历,sdk用多了,不懂的底层原理,去面试被吊打
        一生很短总该留些什么:@bill_jean cv工程师当久了
      • 怪盗kidou:是singleton不是singleTop吧😂
        一生很短总该留些什么:@怪盗kidou 这个有5种写法
      • PM_陈叨叨:跟楼主很相似,现在楼主还在做智能硬件吗?我去了家小米生态链的,做智能家居,可是发现做智能硬件里的安卓开发都是对封装好的硬件接口调用,对自身的技术提高不大,不知道你有没有这种感觉?
        一生很短总该留些什么:@_Frog 是的,我做的是门禁设备,都是用别人的sdk,现在在学java后台,前端技术变化太快了
      • Bule丶klkl:我和楼主差不多,但是工作经验更长一些,明天也开始新面试的第一家,希望不要被虐的太惨
        一生很短总该留些什么:@Bule丶klkl 加油
      • 弱小的码农:像这些公司问题的一些难的问题 基本是用不上的东西 他们也问 这种公司不去也罢
        一生很短总该留些什么:@弱小的码农 问这些问题,很多是用不上,但能体现对整个知识了解的程度,我个人觉得能解决问题,和研究问题了解问题的本质是两个层面!做一个cv工程师,还是做一个有追求的cv工程师这就看个人了!不去也罢,和要我去我不去差别还是很大
      • niuniu0323:我也在准备面试,做了差不多3年多安卓开发~现在看面试题,真的感到大大危机感
        一生很短总该留些什么:@niuniu0323 纯应用不好搞了,找个方向,潜心学深入呗
      • e7c74dbea679:大兄弟是哪个城市的:hushed:
        一生很短总该留些什么:@中年人的春天 在深圳搬砖
      • AJI大侠:很真实的经历,纯app开发的确很难搞,要横向发展
        一生很短总该留些什么:@墨辰lyb 我现在在公司有学习后台的机会,就学后台咯
        plus彭于晏:@一生很短总该留些什么 怎么规划,有些想法吗,分享一下
        一生很短总该留些什么:@AJI大侠 得好好规划下了,中年危机来了😂
      • 沐小晨曦:真实!
        一生很短总该留些什么:@转身不再回眸好好准备下,确实面试会好些,只是现在天太热,面试很难受
        转身不再回眸:真实,最近打算找工作,看到百度上的那些面试题,头都大了
        一生很短总该留些什么:@沐小晨曦 谢谢小姐姐😉🙃
      • 0d1c4fcd0de6:哥们的职业规划方向和我类似,只不过我走的是第一条路线。目前已经踏进前端的大坑了,拿着公司的前端代码,啃Angular1.X中,看到Scope和Module,模块化概念时还有点惊喜,只不过了解到Angular还有2.0、4.0时,我(黑人问号???)
      • Cemetery:看了评论,难道做android的经历都一样吗,好巧我也是
        一生很短总该留些什么:@Cemetery 我们和高手差距还是很大的,我们是在同一个层次,一起加油喽😉
      • 天一方蓝:看到跟我状态一样的人,共勉
        一生很短总该留些什么:@天一方蓝 不甘于平凡,加油😀
      • Ucoon:哈哈哈 很是接地气了 和其他的面试文章大不一样!不过现实中大不多都是这样吧:joy::joy::joy:
        一生很短总该留些什么:@Ucoon 你这么一说,我腰间盘突出了😂
      • BraveJoy:挺感同身受的哈哈,和你交个朋友吧!:smiley:
        一生很短总该留些什么:@BraveJoy 共同进步😀
      • 8ad342e782c3:哥们儿,你的经历几乎和我一模一样,面了七八家后,一家做智能快递柜的公司给了个还不错的offer,不过最后因为家里的原因没去
        一生很短总该留些什么:@梨园俊秀 智能硬件不好转呀,要对硬件有一定的了解,要学深入就得学android系统层开发!想转的话可以转java后台,要么就转h5喽!
        ae12:大哥,小弟也是对于android灰常焦虑,请问该怎么向Android智能硬件转呢?
        一生很短总该留些什么:@梨园俊秀 谢谢哥们你能看我的故事,并且给与评论!滴,滴滴😀

      本文标题:2018Android面试经历

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