记一次德企英文面试的经历

一开始听 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 的重用
  • 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,不知道这个行为会不会减分)
  • 一个星期到两个星期出结果,没通过也不另行通知(唯一觉得不好的地方)

我反问

  • 公司的开发团队规模
  • 公司的技术栈
  • 公司未来发展规划,是否会大规模扩张
  • 实习生的主要职责

说实话这家公司是唯一我去面试给我水喝的,这一点就让我很有好感。或许错过这次以后都不会碰到条件这么好的公司了,然而还是得努力提高自己的水平啊。毕竟为了这次面试自己已经尽力了,早晨起来练习口语,晚上睡觉前练习听力,白天研究题目相关知识。毕设都停了快一个星期了,如果还是不行,那就真的是自己水平不够,不符合人家的要求了。有句话说得好,打铁还需自身硬。还是继续学习去吧。