一开始听 HR 说要英文面试直接被吓到了,后来想想也没什么,学了十几年的英语终于有了用武之地。然后也跟 HR 做了简单的英文自我介绍。大概是觉得我的水平还凑活,后面有了电话技术面,好在这次是中文。然后电话面完又去了公司面。这家公司环境真的特别好,福利也非常不错,除了具体待遇因为还没谈,其实感觉希望也不太大吧。毕竟英文没那么 6,虽然当时自我感觉挺好,回来之后越想越觉得自己当时表现很差劲,之所以自我感觉良好还是公司的人都比较会照顾应聘者情绪吧。
因为没有好意思做笔记,下面的问题大部分都是事后回忆想起来的,还有很多想不起来的,不过基本没回答上的都包含在里面了。
一面(HR 电话沟通,周三)
- 英文自我介绍
- 中文项目介绍
- 英文项目问题描述
- 实习时间确认
- 第二天下午 2 点电话技术面试
二面(技术电话沟通,第二天下午,电话很准时,周四)
- 网络请求框架
- OkHttp、Retrofit
- Android 项目第三方包的管理工具
- Gradle、Maven
- Git 的使用
- 博客服务器的使用
- 项目介绍
- 天气应用、手机卫士
- 自定义 View 的一般流程
- 介绍自己的天气刻度盘
- 图片缓存知道么
- 内存缓存
- 磁盘缓存
- 网络缓存
- AsyncTask 源码解读
- 异步加载框架
- GPA 是什么
- 平均绩点,班级名次,专业名次
我反问
- 觉得我的回答如何
三面(英文题目,第二周周三)
- Activity 的生命周期,以及开启 Activity 的两种方式
- Service 开启的两种方式
- startService
- bindService
- 混合使用
- Intent 的作用
- 连接四大组件的桥梁,传递信息
- 打开其他进程的 Activity,需要设置 Action
- 怎么给 array 去重
- 循环比较去重
- 放进 set 去重
- 放进 LinkedHashSet 去重(保持顺序)
- git pull 的作用
- 从服务器的 git 仓库将代码保存到本地
- Android 数据存储方式有哪些
- SP
- Sqlite
- 文件
- contentProvider
- Internet
- 自定义 View 的 onMeasure 和 onLayout 过程
- 不知道让写代码还是描述,写了一半代码发现写不下了,就用了几句话简单说明
- 如何让布局适配不同的屏幕,例如 800480,19201080?
- 长度单位用 dp,建立不同分辨率下的布局文件,最新出的 constraintLayout
四面(电话里的技术面试官丁和英国 Android 开发,当天)
- 英文自我介绍(早晨写得介绍终于可以背出来了,虽然没有背完)
- 项目介绍和问答(手机卫士、天气应用)
- 打开 App 演示了下,结果没有网络直接奔溃了,又尴尬了,厚着脸皮让老外给我连了公司 WiFi,才开始演示的
- 大概说了下实现什么功能,用了什么技术等
- Recyclerview 头布局,尾布局如何添加
- 重写 adapter
- 因为一直没 get 的点上,映象特别深,看了别人的实现自己尝试了下:
- RecyclerView 的四级缓存分别是什么
- 当时没答上来,才刚开始看这方面来着
- ListView 的二级缓存是什么
- mActiveViews
- 当数据发生变化的时候重新 layout,仅存在于此 layout 期间,在 layout 结束之前就会回收
- 快速重用屏幕可见 itemView,不需要在 createView 和 bindView
- mScrapViews
- 数组包含的 ArrayList
- 缓存离开屏幕的 view,用于即将进入屏幕的 view 的重用
- mActiveViews
- Callable,Runnable,Future,FutureTask 的区别
- Runnable :调用 run 方法,没有返回值,不能取消
- Callable :调用 call 方法,有返回值,不能取消
- Future:task 任务完成验证,获取返回值,与 Runnable 搭配使用
- FutureTask:继承自 RunnableFuture,也就是身兼二者之长,可以运行任务,可以被取消,可以返回结果
- 这个问题当时也没答全,之前看 AsyncTask 源码的时候主要看了 FutureTask 的实现,继承和实现都没太关注,不过好歹说出了前两项和 FutureTask 基本特点
- 按下返回键再打开应用,如何再现之前的数据
- 这个当时由英国面试官问的,一开始没听清楚,有点牛头不对马嘴,后面反应过来,原来是要将数据存在 bundle 里
- 有关于 service 的了解
- 基本跟笔试里的一样
- 有没有写过测试
- 这还真没有,当时老外问这个问题就有点慌了。虽然之前了解过 TDD 开发的东西,当时也没有想起来要说这个,只是说了下自己觉得测试确实也很重要什么的。
五面(HR 与 CTO,当天下午)
- 与英国人沟通过程如何
- 还可以,有一个问题听的不是很清楚,能听懂和理解六七成(安慰我来着,英国人的口音有时候他们也听不太懂)
- 觉得自己面试表现怎么样(上一轮的)
- 有七八成的问题能够回答出来,有一些自己的知识盲区,以及缺少测试经验的问题
- 职业规划是什么
- 以前有过实习机会么,为什么放弃,放弃了后悔么
- 有啊,可惜没去
- 要从测试开始,心理有点不情愿,加上好朋友结婚,顺水推舟
- 有点后悔,测试技能对于开发也很有用,中间很长的空白期,错过了很多经验
- 打算如何提高自己的 Android 开发水平(CTO)
- 之前是如何提高自己的 Android 开发水平的(CTO)
- 对团队协作的认识
- 理想中的团队是什么样的
- 期望的薪资待遇
- 实习期没有特别要求,转正 6K ~ 8K(不知道会不会太高,晚上又发消息改成 5K,不知道这个行为会不会减分)
- 一个星期到两个星期出结果,没通过也不另行通知(唯一觉得不好的地方)
我反问
- 公司的开发团队规模
- 公司的技术栈
- 公司未来发展规划,是否会大规模扩张
- 实习生的主要职责
说实话这家公司是唯一我去面试给我水喝的,这一点就让我很有好感。或许错过这次以后都不会碰到条件这么好的公司了,然而还是得努力提高自己的水平啊。毕竟为了这次面试自己已经尽力了,早晨起来练习口语,晚上睡觉前练习听力,白天研究题目相关知识。毕设都停了快一个星期了,如果还是不行,那就真的是自己水平不够,不符合人家的要求了。有句话说得好,打铁还需自身硬。还是继续学习去吧。
本文最早发布于 alphagao.com 。
网友评论