2018Android面试经历

面试中遇到的一些问题

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

Q2:既然RecyclerView在不少方面能取代ListView,Google为何没把ListView划上一条过期的横线?java

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,提及来内心很慌!有哪些缘由呢?

一、小公司要求不高,本身也抱着只要能作出功能的态度

二、对行业趋势把握不许,没有将来规划(所谓混吃等死)

三、对本身的工做不感兴趣,上班有空闲时间也不会去深刻学习

再来讲说此次找工做面试的一些经历和感想!此次面试大大小小面试了十多家!依我本身在简历上写的几个商城类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,那哥们就问我,单例要注意些什么?我首先回答的到的同步问题,再说构造方法私有,可我忘了一点静态调用!那哥们就给我一条条理出来一、构造函数私有  二、含有一个该类的静态私有对象  三、有一个静态的公有的函数用于建立或获取它自己的静态私有对象  四、其次才是考虑线程同步!Q12)*一个按升序排列好的数组int[] arry = {-5,-1,0,5,9,11,13,15,22,35,46},输入一个x,int x = 31,在数据中找出和为x的两个数,例如 9 + 22 = 31,要求算法的时间复杂度为O(n);

我给出的答案是:

  • 一、先用二分法排除比x大的数,获得pos

  • 二、再从0到pos 经过两层for循环经过一个数与剩下的全部数来相加,等于x的时候break循环

那哥们就开始给我分析,首先第1点想法就是错的,应为给出的数组中有负数,负数+正数有可能获得中间的那个数,再则它这靠得是一个双向逼近的算法!

接下来是一个数据库题目*(Q13)*如何向一个数据库具备int类型A,B,C,D四列的表中随机插入10000条数据?如何按升序取出A列中前10个数?这道题我没答,我觉得考的是数据库操做的基本语法!后来那哥们慢慢跟我分析这道题的考点在哪?他说:“这些语法我也不记得,可是像咱们这样具备两年多工做经验的人百度一下也是能作得出的,可是这里考的不是基本语法,数据库其实也就是一个文件,一个具备固定封装特定语法操做的文件,既然是文件读写就要考虑到效率问题!在数据库中提升效率用到什么,是事务!若是一条条插入,其实每次插入都会维持一个事务,也就至关于文件的打开和关闭,10000次的打开和关闭是很消耗性能的,因此要在插入前使用BEGIN TRANSACTION开启事务,再10000条数据插入完成时用END TRANSACTION结束事务,这样就相对于文件只打开了一次,10000条批量操做完后,再关闭文件!”

下面一题是*(Q14)*service两种启动方式有什么区别?我回答得很简单!他就直接说“面试这笔试也是很重要的一部分,简历你们能够随便写,可是一些技术水平在笔试这是有所体现的,因此在我这笔试这关是没有经过的!”这个时候我挺服气的,毕竟是本身准备很差。后来那哥们就跟我说:“这面试题该背的该记得仍是要记,花个两三天或者一周去准备,对本身多要一两K也是很值得的,因此该辛苦的仍是要辛苦下!”我挺感谢这位哥们的,也挺喜欢和这样率直随意的人打交道!

最后通过两个星期的面试,找了一家符合本身发展方向作智能硬件的公司!通过这段时间的面试,懂得了技术深度的重要性,还有职业规划的重要性!目前我的认为纯App开发很容易被取代,我我的的职业规划

一、以Android技术为基础深刻,再学前端,再扩展到Java后台,作到一个全栈工程师

二、向Android智能硬件,NDK开发转型,由于我大学搞过嵌入式,有些基础,这一行门槛稍微高些不容易被取代!目前来讲本身是打算朝着第二点去发展了!

连接:https://www.jianshu.com/p/189e07bf9f68

更多

Python探究之旅—Python语言的基本认识

来一块儿愉快的开始Python吧

微信公众号:终端研发部

技术
相关文章
相关标签/搜索