从斗鱼Android开发二面被刷,到VR微创公司收留,我的NDK开发梦究竟缺了什么?

面试概况

1、先笔试,笔试问到了jvm的内容,其他的就比较正常,有一定难度;

2、面试有几轮应该不是一个部门的,可能是有需求的部门轮流来面,面试官风格不一,一般会按你的笔试题进行拓展,或者根据你的项目经验问问题,然后就是更深入的,可能问的比较广泛,如果没有特别准备,很多问题答不上来

3、面试完成之后,hr会根据各个面试官的反馈给你答复,等了很久,估计2周吧,自己也知道没戏了,hr的反馈消息才过来

斗鱼Android开发一面面经

8.15号笔试,昨天下午发邮件通知加群面试,面试方式是使用腾讯会议进行远程面试

问题

  1. 自我介绍
  2. 如何选择工作地点?
  3. 安卓是如何学习的?
  4. 项目是自己开发的还是小组开发的?
  5. 项目中用到了哪些库?
  6. 项目中哪个功能点的实现让你觉得有成就感,怎么实现的?
  7. 除了Kotlin,其他的热门技术接触过吗?(热修复,插件化,Flutter)
  8. 安卓中最常见的三大问题?(ANR,OOM和内存泄漏)
  9. 开启一个耗时任务,可以使用哪些方式?(Service,线程)
  10. 还有吗?(Android消息处理机制)
  11. 哪些情况下可能触发OOM?(加载图片等资源过多,内存泄漏累积引起)
  12. 哪些情况下可能引起内存泄漏?(未完成线程中的强引用,static修饰的变量)
  13. Java中还有哪些引用?(软、弱、虚)
  14. 软引用和弱引用有什么区别?(前者只有内存不足时才会被清除,后者只要发生GC就会被清除)
  15. 使用多线程修改变量时如何解决读脏数据的问题?(volatie,锁)
  16. volatie具体是如何解决该问题的?(每次修改变量后立刻刷新至主存中,通知其他线程变量复制失效,重新从主存中获取变量)
  17. Android中的IPC方式有哪些?
  18. 为什么一个APP会存在多个进程?
  19. 序列化和包裹化有什么区别?
  20. 包裹化为什么性能比序列化好?
  21. 给你一个APP进行优化,你会从哪些方面进行优化?
  22. 为什么使用ViewStub可以进行优化?
  23. APP如何瘦身?
  24. 自定义控件要重写哪些方法?
  25. 安卓中哪些地方用到了设计模式?使用到的是什么模式?
  26. 使用过注解吗?
  27. 如何自定义注解?
  28. 看过Android的源码吗?
  29. 如何在链表中判断是否存在环?(快慢指针)

斗鱼Android开发二面面经

面试问题

  1. 自我介绍
  2. 疫情期间的学习安排
  3. 介绍一下项目功能
  4. 项目中用到了哪些框架?
  5. 常用图片框架了解吗?
  6. 如何加载网上的图片资源?
  7. 如何获取一个根目录下的图片?
  8. 你项目中的图片都放在哪里?为什么?
  9. 如果你的APP运行在一个720p的手机上,会发生什么?
  10. 通过src设置图片和通过bg设置图片有什么区别?
  11. 图片放置都有哪些模式,需要设置哪一个参数?
  12. 网络框架了解吗?
  13. 除了Retrofit,你还知道哪些网络框架?用过吗?
  14. 安卓的最新版本知道是几吗?有哪些最新特性?
  15. 有自己适配过Dark Mode吗?
  16. Android的权限了解吗?如何申请一个权限?
  17. Android的通知了解吗?现在APP如何发出一个通知?
  18. Java中==和equals的区别?
  19. equals和hashcode有什么关系?
  20. 默认情况下,对两对象使用equals返回true,两者hashcode是否相等?
  21. 你是怎么有自学Java,Android的想法的?
  22. 你是怎么自学的?
  23. 你有哪些问题想问的?

某创业公司

这家创业公司的面试其实只能算是缘分吧。可能就是传说中的非常适合吧。他们是做VR的,所以比较关注我的OpenGL技能(其他公司都对我这一点不以为然)。而且他们会去做各种动画效果,所以也知道骨骼动画是个什么东西。而我从零开发了一个骨骼动画引擎,他们也知道这个的难度,虽然是个2D的,但是原理大致相同,自然也是十分青睐。而且他们是要做SDK,而我也有开发SDK的经历。

主要问的问题都是针对于OpenGL和我写的骨骼动画引擎和细节,还有SDK的设计这三方面。在这个面试过程中也感受出了他们公司技术还是可以的。因为自己搞OpenGL事件比较短,理解还不是很深,面试哥从OpenGL怎样工作的,和GPU怎样工作的给我讲了一通……在理解深度上被完爆……

之后几轮技术面差不多同样内容。最后就是创业公司的尿性嘛,副总裁、CEO随便面面就OK了。

其他公司

其他还有几家公司。

其中一家倾向于ROM开发,也就是Framework开发工程师,我觉得问的问题对于我们应用的开发的没有参考价值。简直不是一个世界的!
还有几家外包公司,都没有技术面,做个笔试题OK了……
还有一家公司昨天面试的,上来问了一个充满杀气的问题:你最擅长什么!听到这个问题,我的第一反应是一脸懵逼!第二反应:这是要怼我了!无论回答什么他都会在这个方向问到死。可能一个简单的API,记不住都会让他认为,这么简单的东西你都不会还说擅长?而往往就是一些简单的API,谁会去背那些东西。不过遇到了我也是认命了!然后我就说了个UI绘制方面。然后他又问了我在这方面做过的最复杂的东西是什么。然后我讲了自己做的OpenGL视图库和骨骼动画引擎。不过他好像并不怎么关心。应该是没做过OpenGL吧,也没做过什么复杂的动画效果吧,不知道要问什么。然后又问还做过什么,然后我把自己做的自定义View说了一下,还有就是我的RecyclerView的马蜂窝布局管理器(一个自定义的LayoutManager)。但是这个过程中他愣是把我说的自定义LayoutManager理解成了自己自定义的一个ViewGroup!然后问的问题我都感觉不是我这个LayoutManager所能管的内容。然后弄了半天才发现,面试哥一直理解的有出入……真是囧!整个面试过程下来感觉天南地北。还有他问我用的OpenGL是用的什么容器?我说GLSurfaceView。好像他听成了SurfaceView,然后问SurfaceView和View有什么区别。一开始这里是我没有听清,因为紧接着他问的OpenGL在什么容器嘛,所以我把GLSurfaceView的工作原理讲了半天……面试哥听的好像也是云里雾里,然后才知道,他问的SurfaceView,然后我又把SurfaceView的讲了一通……整个面试我觉得面试哥和我都不舒服,所以我觉得应该不会过吧。

总结

面试下来也有些感悟吧。

首先,基础知识。
这些都是在面试中必然涉及的问题。可能我上面并没有列点来具体说明,但是多少都有涉及。而且我即使列出了这些,你也不一定会遇到,其实这个范围太大了,所以自己要注意对于细节的追求。如果是要面试了,可以直接点击加入资源丰富,学习氛围浓厚的**技术圈,点击**技术圈一起学习交流吧!
详细整理复制石墨文档可以见:https://shimo.im/docs/QdyGqGHXX8PyQ8pw

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

Android面试图解

其次的面试内容要取决于面试官了,我感觉大概分为三种面试官。

第一种是那种会根据你的简历来面试的。这也是大多数。
第二种会根据自己的需求来面试的。
第三种,根据你牛不牛来面试的。
针对于第一种我觉得首先是对自己的简历严格把关,写在上面的内容一定要可以说出123。对于程序员来说语言表达能力比较差,比如我就是这样。所以自己在面试之前先试着说一说,因为面试过程你只能通过说来让对方知道你所做的东西,你能做出来的一定要能说出来。据说有些人没做过也能说出来。不过我是没有这个能力。

针对于第二种其实要看自己的应变能力。因为你很难预测到对方可能会给你提出怎样的问题。有的时候你一听到问题没有办法马上想到解决的办法。那么这里有一个小技巧,你可以说没有听清楚,中间有一点信号不好,让面试官重复一遍问题,来为自己争取思考时间。如果还没有想出来,那么你可以先分析提出的问题,然后渐渐接近问题的答案。

针对于第三种,我自己之前也没有准备过。第三种面试官非常喜欢问的问题是:你擅长什么?你在哪方面有过人之处?你对哪方面比较精通?其实遇到这种面试官就心中默念阿弥陀佛吧!因为这种面试官要求非常高。他希望的是你对一个领域研究的非常深入,你一个人可以解决这个领域所有的问题,而且希望你是在这个领域做出过一定突破。比如我们常用的什么加载库,你优化它,结果快了多少,就是1%都可以。这个可不是一般的人能够达到的。而大多数情况下我们都是各个领域都涉及一点,虽然可能看过源码,有一定理解的深度,但远达不到可以解决这个领域所有问题的程度,更没有这种技术突破。像有些第三方库源码我也去看过,但自认为达不到他们所谓的擅长和精通。不过针对于这种面试官我觉得也是值得准备一下的。不然自己真的是会一脸懵逼。有的时候就是遇到这样范范的问题,你就已经不知道要如何说话了。然后说错一句话就会被各种完爆,脑海中回响各种 Enemy is Legendary!之后几天估计都要怀疑人生了……那么下面说一下准备方法吧。不过自己也是刚刚遇到这种面试官。也没有确定是否正确。也是给自己的计划。

选一个自己相对比较擅长的领域。
基础要 背!平时我并不太去留意要记住各种API,但是这里就是要背过。不然面试官就会想“这么简单的API都含糊不清还说擅长?”就是真的面试的时候记不清了,也不要打磕,要非常自信的说个差不多的,不要说“好像……”这样的话。要的就是自信,因为这个API面试官也不一定记得那么清楚。不过自己能背过才真的有底气。
试着去了解这个领域市面上的技术。一般的话就是一些库或者框架。这里要记住,不要急着去看源码,要先掌握这些技术都有哪些优缺点,尤其是缺点!因为我们经常因为一个库有什么优点而去使用它,但是缺点往往是我们容易忽略的地方。而知不知道这个库的缺点,是你能不能驾驭这个库的一个关键。
如果有时间的话,研究其中一个众所周知的库的源码。并试图找到它缺点的原因,并找到其解决方法。当然你如果正要准备面试了,肯定没有这个时间。那么就找一些现成的相关的文章来看看吧。然后记住。

结果

近期的面试过程就是差不多这个样子。而且对于我这种刚刚毕业没多久,很多公司连简历都比较难过。所以也没有一些非常大的公司的面试机会。因为大公司社招和校招分的很清楚。最终自己决定去那家VR的创业公司了,原因有以下几点:我本放荡不羁爱自由,第一当然是兴趣,第二呢希望补充Android方面NDK的技术,第三希望可以做一些OpenGL领域更深入研究,而VR正是对其要求非常高,自己也想去挑战这方面的技术瓶颈。下次面试的时候可以非常有底气的回答最擅长什么这样的问题。

猜你喜欢

转载自blog.csdn.net/weixin_43901866/article/details/108292575