谈谈Android面试以后的一些感觉,附面试题和学习资料

这篇文章原本是不想的,由于入职新公司都一个月了,可是想一想仍是写写,本身对过去的两三年作个总结,或许能帮助到些人,或者从中能得一些建议。此次出去面试主要是两个星期的时间,第一个星期主要是投简历,第二个星期主要是面试,一天安排了2-3个面试。

先说说此次面试主要印象比较深的知识点:java

  • 栈和堆的区别
  • 接口和抽象类的本质区别
  • String、StringBuffer和StringBuilder的区别
  • 注解、反射、泛型
  • Handler消息机制,生产者和消费者模型
  • View、ViewGroup的事件传递机制,如何解决滑动冲突? 回答如何滑动冲突最好是举出实际的场景和怎么解决的
  • View、ViewGroup的绘制流程
  • okHttp、Retrofit的源码,原理
  • 解释一下什么是MVP架构
  • Https原理,加密算法
  • RecyclerView的缓存机制
  • 常见的设计模式主要问到了这几个(单例、代理、适配器、建造者),先说概念,而后面试官会问具体的使用场景
  • 最新的Google AAC架构(ViewModel、LiveData、Room等等)有没有在使用,以及背后的实现原理
  • Kotlin有没有在使用,问这个问题的公司,基本上本身的公司在使用Kotlin开发新App,要么在使用Kotlin迁移、重构、与java混合在一块儿
  • Android常见的内存泄漏缘由,以及检查工具,主要是问如何使用Android Profile检查内存泄漏的,性能分析怎么作?以及第三方检查内存泄漏的工具LeakCanary的原理?
  • 开发的App有哪些亮点,难点、如何排查线上的bug,有没有重构代码的经验

以上的面试题,主要是Android应用层知识,须要面试以前造造火箭的,还须要平时的耕耘、积累和总结。
再说说面试印象比较深的公司
1.浦发信用卡
浦发信用卡是被怼的最惨的,刚开始问了几个基础的问题,而后问我你作的app传参数是怎么防止别人窜取的。由于我上家公司主要是作金融理财贷款类型的app,在加上是浦发信用卡研发团队的性质,想一想问这个问题很正常。 我回答用so库对参数进行验证,对一些特殊的参数进行md5加密,跟后台进行比对。面试官so库就安全嘛,不能够反编译嘛。而后接着问https原理,加密算法知道哪些?压根回答不出,信心一会儿就没了。面试官接着问RecyclerView的缓存机制,更加回答不出,由于平时也看过,里面的代码也太多,平时没遇到上万,几十万的数据,有不少种不一样类型的布局的列表。因此不会往深刻看,也看不太懂。android

2.每天拍车(D轮的专业我的卖车平台,相似瓜子二手车)
面试官问了两个半的小时的技术问题,涵盖了上面总结的大部分面试题(除了浦发信用卡总结的),整体发现聊的还不错,由于大部分都答出来了,过了两天收到了复试。ios

3.工程师爸爸(B轮的专业作儿童教育的)
面试官主要是问了最新的Android Jetpack最新的组件原理、Kotlin有没有在使用、android的进程间的通讯方式、多线程下载你是怎么作的?断点怎么作?整体回答的还能够,问到后面面试官说,我看了你的github。由于个人github上面开源了一个多线程下载文件实例和Kotlin写的一个开源的App。过了两天收到了复试。git

总结了几家公司,还有其它公司的复试,offer。没一一列举了。复试的都没去,由于打电话过来复试,都快入职了我如今公司。入职的公司记得是第一个星期周六面试的,印象比较两个深的问题:一、Handler消息机制、生产者和消费者模型如何理解,如何应用到实际开发中的。二、帧动画有上多张图片如何保证内存不OOM?问的技术点基本上都答出了来了,而后人事面,问我何时尽快入职,日后推了一个星期入职。 目前入职的公司是主要作智能交互、智能机器人这块,10几个搞android的。发现前人敲的代码,有好的,也有差的。这个也正常,本身也有敲的差的代码也留给了别人。github

整体发现整个面试下来,投简历发现今年996的公司还蛮多的,前两年没有这么多。有的人事,boss会直接说是996,要么本身面试过程当中问是否是996,996的公司是拒绝的,压根不想去。面试的过程当中发现本身的信心不够,技术能力也不够、本身也着急。面试想一想这几点要特别注意。面试

① 像大一点的厂,投简历过去,在加上面试的时间回复,须要两周。
②若是面试官过程当中,发现面试官没有问什么技术问题,或者问的问题不够深刻,基本上能够判定这家公司不是靠技术做为驱动公司发展的。
③提升本身的信心,本身要会的多,对知识点的理解要深刻。

写这篇文章的目的主要是作个总结。记得刚出学校时,但愿本身能遇到一个大牛带带本身,要多学习,可能进公司的目的都是为了学习。我想有不少刚出学校的有我这样的心态,哈哈,这个当初的心态.....如今想一想整个心态都不同了,进公司是为了体现价值、给公司带来效益。至于技术很大一部分是须要靠本身的,还一部分是公司的业务、产品需求是作哪块,技术点就会主要攻哪块。平时学习须要多积累、多体会、代码须要多动手敲。 刚出学校来写代码很乱,没编程风格,没思路。这个很正常,大部分人都这样,能力是慢慢提高的,经历过一两年这一点会好多了。如今我看看本身两年前的敲的代码,很菜,很次。算法

因为本身作开发三年了,主要是在作android端的app,这其中也学习了Spring、SpringMVC、ios开发等等。之因此会接触其它的,一是待的公司的须要,有的公司人手不够或者有的岗位并不想在招人,拉你去作作、去看看,对于这个本身开始工做的第一年心里是很拒绝的,并不想作其它的。二是随着工做时间久了,学习能力也慢慢的提升了,发现须要学习其它的东西,光Android的应用层压根不够,再加上市场的竞争愈来愈激烈。去年开始接触Kotlin、Rect、ios的时候,学习的过程当中发现不少东西的都是相通的,即便是不一样的平台,不一样的开发语言。比较像金庸小说里面描述武学的那样 “天下武学异曲同工”。编程

写代码总结如下几点:设计模式

①须要确认需求的,理解有误差的。写代码以前必定要和产品经理沟通交流。宁愿多花时间去和测试的、设计师沟通,也不要去埋头写代码。一样的,认真想一想怎么实现这样一个功能,思路理清了在敲代码。
②养成良好的编码习惯,风格。多看看Google开源的在github上示例,或者其它知名公司的
③六大设计原则、一些经常使用的设计模式理解透牢记于心,多在编码过程当中使用。
④代码要有思路,写好注释,写的代码不仅仅是本身要看,也是给别人看的
⑤平时学习须要多总结、多体会、代码须要多动手敲

最近分享,我在平时学习整理的资料,免费分享
欢迎加入个人合做群领取资料:QQ群925019412
在这里,你能够掌握最新的市场走向,学到最新的前沿技术,有一群志同道合的朋友讨论问题,群员之间的工做内推缓存

图片描述

图片描述

相关文章
相关标签/搜索