Android开发Android开发

浅谈 Android面试之后的一些感受,附面试题

2022-06-11  本文已影响0人  丘卡皮

作者:皮卡丘

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

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

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

以上的面试题,主要是Android应用层知识,需要面试之前造造火箭的,还需要平时的耕耘、积累和总结

再说说面试印象比较深的公司

浦发信用卡

浦发信用卡是被怼的最惨的,刚开始问了几个基础的问题,然后问我你做的app传参数是怎么防止别人窜取的。因为我上家公司主要是做金融理财贷款类型的app,在加上是浦发信用卡研发团队的性质,想想问这个问题很正常。 我回答用so库对参数进行验证,对一些特殊的参数进行md5加密,跟后台进行比对。面试官so库就安全嘛,不可以反编译嘛。然后接着问https原理,加密算法知道哪些?压根回答不出,信心一下子就没了。面试官接着问RecyclerView的缓存机制,更加回答不出,因为平时也看过,里面的代码也太多,平时没遇到上万,几十万的数据,有很多种不同类型的布局的列表。所以不会往深入看,也看不太懂。

天天拍车(D轮的专业个人卖车平台,类似瓜子二手车)

面试官问了两个半的小时的技术问题,涵盖了上面总结的大部分面试题(除了浦发信用卡总结的),总体发现聊的还不错,因为大部分都答出来了,过了两天收到了复试。

工程师爸爸(B轮的专业做儿童教育的)

面试官主要是问了最新的Android Jetpack最新的组件原理、Kotlin有没有在使用、android的进程间的通信方式、多线程下载你是怎么做的?断点怎么做?总体回答的还可以,问到后面面试官说,我看了你的github。因为我的github上面开源了一个多线程下载文件实例和Kotlin写的一个开源的App。过了两天收到了复试。

总结了几家公司,还有其它公司的复试,offer。没一一列举了。复试的都没去,因为打电话过来复试,都快入职了我现在公司。入职的公司记得是第一个星期周六面试的,印象比较两个深的问题:
1、Handler消息机制、生产者和消费者模型如何理解,如何应用到实际开发中的。
2、帧动画有上多张图片如何保证内存不OOM?

问的技术点基本上都答出了来了,然后人事面,问我什么时候尽快入职,往后推了一个星期入职。 目前入职的公司是主要做智能交互、智能机器人这块,10几个搞android的。发现前人敲的代码,有好的,也有差的。这个也正常,自己也有敲的差的代码也留给了别人。

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

  1. 像大一点的厂,投简历过去,在加上面试的时间回复,需要两周。
  2. 如果面试官过程中,发现面试官没有问什么技术问题,或者问的问题不够深入,基本上可以断定这家公司不是靠技术作为驱动公司发展的。
  3. 提高自己的信心,自己要会的多,对知识点的理解要深入。

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

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

写代码总结以下几点

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

这里跟大家分享一些我学习时整理的 Android 的学习文档+Android 视频+Android 面试题+Android 核心笔记,希望可以帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,可以分享给身边好友一起学习,如果你有需要的话,可以顺手点赞+评论,关注一波后可以 点击这里直接获取!!!

上一篇下一篇

猜你喜欢

热点阅读