基本情况
先说一下个人基本情况,山东渣一本大四学生,计算机科学与技术专业。主要学的Android开发,所以投的岗位都是Android开发工程师。暑假开始准备找实习,投了知乎,内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试,知乎Skype面试,蘑菇街阿里电话面试,网易现场面。
面试结果:
- 知乎二面被拒
- 蘑菇街阿里一面被拒
- 网易三面,然后备胎了,前几天被通知过了,收到了offer。
自己整理了一下被问到的问题,现在分享给大家,另外自己备份复习的Android知识点总结也会分享给大家,在Github里面,朋友可以点击下方链接进入Github阅览,希望能帮助到各位求职的小伙伴。
推荐阅读:2021年Android程序员BAT+TJM面试题收藏整理笔记+知识点整理
知乎
知乎面试前hr会事先跟你电话确定面试时间,然后把你的Skype账号给hr,到时候面试官会加你好友,然后开始面试。
一面:
- 自我介绍
- 介绍一下自己做过什么项目 ps:这里会根据项目问一些问题
- 跨线程通信 主要涉及 LooperMessageHandler以及MessageQueue
- 说一下自定义View需要注意哪些细节 主要说了一下View绘制的三大过程onDraw()不要做耗时操* 作 不要创建* 新对象 以及 怎么处理View的触摸事件
- View的事件冲突的解决办法 ps:重写dispatchEvent()或者touch()方法
- 手写代码:给你一个无限大的数(用字符串表示),计算这个数加一以后的结果
二面
- 手写代码 两个有序链表合并成一个有序链表
- Object 中有哪些公有方法 ps:clone();toString();wait();notify();getClass();finalize();equals();hashCode();
- 讲一下 listView 的优化方法
- 讲一下 RecycleView 与 listview 的区别
- view的绘制过程
阿里
- 问了一下大体情况 比如什么时候可以实习啊 考不考研啊
- 都会什么算法 讲一下
- 做过什么项目没有 讲一下项目优化的地方
- Activity的启动模式
- 跨线程通信
- 夸进程通信 主要是Android的AIDL
- 如何解析json数据和xml
蘑菇街
- 说说做了什么项目
- 自定义view的几个步骤 怎么刷新view ps:onLayout(); onMeasrue();onDraw();
- RecycleView的优化
- 几种context的区别
- 看过什么源码没有
- 讲一下binder类
- Runnable运行在哪个线程里面 ps:开启一个子线程的唯一方法就是new Thread().start();
- HashMap和HashTable的区别
- raw和assets文件夹的区别
- activity关闭后尚未运行完毕的thread会怎么样 ps:会变成空进程线程,优先级最低 很容易被终止回收
- mainfest文件的合并规则
网易
网易内推后笔试,过了笔试后去杭州面试 ps:报销来回车费
报销上限是600元 这个回来没记 可能不全。
一面:
- 自我介绍
- 跨线程通信
- 讲了其中一个项目是怎么实现的 问jsoup怎么拼 = =
- 用过哪些开源库 讲一下他的架构是怎样的
- java的四种引用 虚引用的作用
- 图片三级缓存 内存缓存满了怎么办 ps:优先级队列 满了后根据优先级主动删除一部分图片 根据LRU算法确定优先级
- 讲一下JNI开发的过程 java怎么找到c函数 ps:JNINativeMethod保存函数对应关系
- 平时有什么爱好没有 = = ps:潜泳 可以潜好几天 然后自己浮上来
二面:
- activity的四中启动模式
- service的生命周期
- 讲一下自己的项目
- 项目中用JNI做什么 为什么要用他呢
- 什么是OAuth协议 做什么的
- 其他的记不清楚了
HR面:
- 什么时候可以来实习 实习多久
- 多个offer怎么选
- 你有团队开发经验 内部冲突怎么解决
- 你觉得杭州怎么样
- 为什么选择网易
- 用过网易什么产品 ps:吃过网易猪肉
- 其他忘记 好像聊了好久 得一个小时吧
最后
选一个自己相对比较擅长的领域。
基础要 背!平时我并不太去留意要记住各种API,但是这里就是要理解。不然面试官就会想“这么简单的API都含糊不清还说擅长?”就是真的面试的时候记不清了,也不要打磕,要非常自信的说个差不多的,不要说“好像……”这样的话。要的就是自信,因为这个API面试官也不一定记得那么清楚。不过自己能背过才真的有底气。
试着去了解这个领域市面上的技术。一般的话就是一些库或者框架。这里要记住,不要急着去看源码,要先掌握这些技术都有哪些优缺点,尤其是缺点!
因为我们经常因为一个库有什么优点而去使用它,但是缺点往往是我们容易忽略的地方。而知不知道这个库的缺点,是你能不能驾驭这个库的一个关键。
如果有时间的话,研究其中一个众所周知的库的源码。并试图找到它缺点的原因,并找到其解决方法。当然你如果正要准备面试了,肯定没有这个时间。那么就找一些现成的相关的文章来看看吧。然后记住。