面试|【2020春招】英国硕士历时三个月的Android开发岗春招总结贴(拿到双Offer)

面试|【2020春招】英国硕士历时三个月的Android开发岗春招总结贴(拿到双Offer)
文章图片

前言 本人英国水硕。去年12月拿的毕业证。元宵过后开始备战春招,4月13结束。一半以上公司投了没反应。最终面了5家公司(字节跳动,美团,网易有道,三七互娱,跟谁学),2个offer(三七互娱,跟谁学)。实实在在一个小菜鸡,跟那些offer收割机大佬比不了。但也算有所收获吧。
字节跳动 字节跳动面了两次。
字节跳动 客户端国际化业务一面 1.16 Base 北京 (挂)

  • 进程和线程
  • 项目中用到过多线程嘛?
  • 线程安全
  • 死锁
  • 线程等待技术(同步机制)
  • Pv操作
  • 了解的锁的种类
  • 线程池作用
  • 进程的内存成分和作用
  • jvm
  • 网络协议栈
  • osi七层
  • 具体协议
  • HTTP怎么李彤tcp 为什么用tcp 为什么不用udp
  • TCP为什么可靠
  • 为什么三次握手而不是两次、四次或者更多
  • HTTP端口
  • 为什么要有端口
  • 数组和链表往末尾添加一个数据 谁效率高
  • HashMap读取时间复杂(对于指定下标O(1) ) 通过给定值(O(n)) 需要遍历整个数组
  • 二分查找时间复杂度O(log2n)
快排时间复杂度(O(nlogn))
算法: LeetCode原题 最小差
因为这是准备之后的第一场面试,所以非常紧张。答的不算太好,但基本也都答出来了。但是算法就比较垃圾了。知道思路当时死都写不出来,面试结束几分钟就写完了。还是自己当时太菜,对算法这些不熟练。
字节跳动 3.25 Base 深圳 一面二面连着的 二面挂
这两个因为是连着的,然后中途二面面试官打电话让我别走,到面试的房间等他 导致录音被中断了,就没做面经。
反正基本都是围绕项目问。
两个面试的算法也都写出来了,还是挂了,估计还是项目太low了吧。
网易有道(三面挂) 3月10号下午2点 网易有道校招一面(52min)
  • 自我介绍
  • Android的生命周期(从创建到销毁经历的生命周期函数)
  • HashMap的原理(底层)
  • 在java中怎么解决hash冲突
  • RecyclerView
  • RecyclerView 横屏滑动和竖屏滑动怎么实现(没答出来)
    (LinearLayout 设置为垂直,然后LinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL) )
  • Handler原理
  • 要再子线程使用Handler要怎么实现(没答出来)
  • Fragment和Activity的区别
  • webview用过没(没用过)
  • Jvm的内存分布
  • Android中序列化方式(Parcelable,Serialable)
  • Android中创建线程的方式
  • 线程池
  • TCP/UDP的区别
  • TCP的三次握手、四次挥手
  • 在Android中两个Activity通过什么传递数据(传递对象先序列化)
  • GET和POST的区别
HTTP请求头包含哪些
算法:快排、二分
3月12 下午2点 网易有道二面 (58min)
  • 自我介绍
  • TCP/UDP区别
  • 线程和进程区别
  • 写一个代码 ,有个网络请求,在Activity中new一个http请求 是进程还是线程
  • 在主线程请求网络嘛?
  • 线程处理回来后,如果界面不见了怎么办(没答出来)
  • Activity启动模式
  • SingleTask和SingleInstance区别
  • 了解CPU的时间片状态嘛?
  • C++动态链接库了解过(没接触过C++)
  • 用过加密嘛
  • 对称加密和非对称加密的区别
  • 常用对称加密有哪些
  • 集合用过吗(List和Map的区别)
  • 什么叫线程安全的集合什么叫线程不安全的集合
  • Hash原理(冲突检测)
  • HashMap在java8版本之后有个红黑树的概念(完全?平衡?)
  • 线程池
  • 泛型
  • 泛型擦除
  • ListView优化滑动速度
  • RecyclerView 与ListView的区别
  • RecyclerView 数据更新部分(没看过)
  • 安卓的手势(Motion_Event 以及事件分发)
  • View的绘制方法
  • View的绘制流程
  • 设计模式
  • 常见架构(MVC,MVP)
  • 安卓里的动画
  • 有在canvas的绘制过吗
  • 安卓的适配单位换算
  • Bitmap
  • SurfaceView
  • SQLite 版本更新
  • 存储数据还有其他存储方式?区别?如果应用卸载哪些会消失
  • 接口需要加abstract嘛
  • enum?(没用过)
  • MySQL 级联删除 多表查询
  • OOM遇见过嘛
  • LRU算法介绍原理
  • 矩阵Matrix 图片的颜色参数通道(没用过)
  • Picasso和Glide区别
  • 加载大图OOM怎么处理
  • 加载过程
  • 收获最大,在学校学习哪些点帮助最大,难点最大
  • 在学校或者实践当中碰到的困难的点,怎么解决的
  • 迭代器怎么完成的
算法:一个有序数组找到2个值加起来为target LeetCode 第一题
网易三面 总监面 3月17日 下午15:00 41min (挂)
  • 自我介绍
  • 项目问题
  • SurfaceView的特点(因为项目用过)
  • SurfaceView的缓存机制
  • Android读过什么源码(讲了okhttp的一些缓存策略和失败重连)
算法题
//char型数组words,由空格以及字母组成。我们定义被空格隔离开的字符序列为一个单词。现需要对其处理,把连续的空格换成一个空格,把单词的首字母大写。要求:1. 在原有数组上操作,不得开辟新的数组空间。 2. 性能也要考虑优化。
//void processWords(char[] words)
有道的三次面试除了第三次的总监面,其他两次还是相当愉快的。三面的面试官,估计开的双屏面试,全程几乎没有怎么看我(可能是压力面吧),都在盯自己的屏幕,回答问题也不肯定也不否认的那种。
挂的原因觉得可能还是我的项目太简单了吧。没啥亮点。
面试|【2020春招】英国硕士历时三个月的Android开发岗春招总结贴(拿到双Offer)
文章图片

美团(一面挂) 美团点评一面 3月23日15:00 (47min) Android工程师 Base北京(挂)
  • 自我介绍
  • 优化页面跳转和数据传递(简历写的)
  • 遇到什么问题
  • 看过什么源码(HashMap,线程池)
  • 讲讲线程池
  • 线程池用途
  • 创建线程的方式
  • 举一个死锁的例子,实际场景
  • Java占据一个资源的关键字是哪个
  • 写一个死锁 (两个线程两个对象)
  • SP 的存储格式
  • 当存储量很大的时候有什么问题
  • Activity和Activity之间通信方式
  • Activity A跳转到Activity B ,B再传递消息给ActivityA 用什么
  • ListView为什么要有ViewHolder(使用ViewHolder可以避免重复地调用findViewById)
  • 序列化有用过没
  • 创建对象的方式(new,clone,反射,反序列化)
  • sp和sqlite区别
  • Java中的深拷贝和浅拷贝
  • Java里创建对象 ,jvm会做什么事情
  • Java的泛型原理
  • 加密算法有了解过?
  • 用过git嘛
  • 回滚用什么命令(revert)
  • Ide用什么
  • 用过什么网络库和图片库(Picasso,Glide,okhttp)
  • 一个整数,打印二进制多少个1 。说思路不用写(说了2种,问还有嘛,最后说了3种,问 还有吗 没了….)
  • 字符串反转。说思路不用写(说了3种 还有嘛。。没了。。。)
自我评价
性格呢
反问:
评价下我: 你的自我评价很正确。。
本来以为应该会有二面,但是一直没有消息。没通知过也没通知说挂了。就默认他挂了。
三七互娱(Offer) 三七互娱一面 3月19日 15:00(28 min)
  • 自我介绍
  • 为什么选Android这个方向
  • ArrayList和LinkedList
  • 谁占内存高一点
  • 从ArrayList和LinkedList中get一个数据,谁内存大
  • 类实例化过程: 父类的静态代码块,非静态代码块 和子类的静态代码块,非静态代码块
    初始化顺序
  • 怎么理解。为什么是这个顺序
  • 字符串 == 和 equals 的区别
  • HTTP 怎么理解无状态
  • HTTP 工作原理
  • 项目
3月27 hr面(20min)
常规问题
4月1 总监面(20min)
  • 玩啥游戏
  • 为啥喜欢玩这游戏
  • 为什么想做编程
  • 为什么走Android
  • 项目介绍一下
  • 最大的问题
  • 闲暇时间做啥提高编程能力或者安卓的能力
  • 最大的优势
  • 举个例子
  • 回想这段经历什么感觉
  • 新技术去哪里接触
  • 对你影响最大的app或者公司
  • 有啥想问的
跟谁学(Offer) 跟谁学初面 4月1日 19:00(28min)
闲聊了一会
  • 什么是线程,什么是进程?
  • JDK & JVM & JRE分别是什么以及它们的区别?
  • 什么是面向过程 & 什么是面向对象 & 区别?
  • 谈谈你对this和super的认识。
  • 静态属性和静态方法能被继承吗?静态方法又是否能被重写呢
  • Java多态的实现机制是什么
  • static关键字的作用?
  • final关键字的作用
  • 基本类型的初始化值为多少?引用类型的初始值为多少
  • 能说说多维数组在内存上是怎么存储的吗?
  • Error和Exception的区别
  • 给我例举至少5个常见的运行时异常
  • 如果读取一个txt文本文件乱码了,你觉得原因是什么
  • Map的遍历方式有哪些?
  • 你觉得Lock和Synchronized的区别是什么
  • 四大组件是哪四个
  • 如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity
  • 你了解ViewPager2吗?和ViewPager 1有哪些区别?
  • Android中的动画分为哪些种类 & 特点 & 缺点。
  • 在做悬浮窗的时候你遇到了什么困难
  • 说说Android中一些屏幕单位
  • apk为什么需要签名
  • Flutter
  • Android中播放视频音频的方式有哪些
  • 说说你知道的查找算法
4月9日 跟谁学二面 10:00 30min(时间不算算法,算法在视频之前在线做的)
  • 自我介绍
  • 有什么offer
  • 家里同不同意你来北京 有没有兄弟姐妹
  • 学校分数,排名
  • 对我们公司有什么了解
  • 线上教育线下教育的优缺点
  • 最有挑战的事情
  • 怎么解决
  • 朋友怎么评价你
  • HTTP(从协议,状态码,1.0/1.1跟2.0 扯了一堆)
  • 最消极的词评价自己
  • 最近看的3本书
  • 学到了什么
  • 最有成就感的事
  • 为什么这件事给你成就感
  • 知道我们公司有哪些竞品吗
  • 觉得自己三个短板
  • 怎么克服
  • 刷了多少LeetCode
emmmmmm 还有些忘了
反问环节
算法:
统计使用数 TOP 1 的标签。
现有数据:[{tagName: 'p'}, {tagName: 'div'}, {tagName: 'p'}, ....],
请统计出现次数 TOP 1 的 tagName。
总结 我大四就到国外去读书了,从来没有实习过(出国前的暑假确实有时间可以去实习,但是都被我浪费掉了) 所以相对于一直在国内的同学,大四就开始实习,在这一块有着明显的劣势。
之前学校里学的都是什么数据挖掘机器学习这些,跟我要找的安卓开发,知识上还是差的挺多的。以前很多学过的也都忘记了。
所以我基本上是从头开始学的。我看的书大概就这些:
  • 操作系统:深入理解计算机系统
  • 计算机网络 : 谢希仁的计算机网络
  • 数据结构和算法: B站视频
  • Android:Android的进阶之光
  • 算法:剑指和LeetCode
在总结几点需要注意的吧:
  • 简历上一定不要写自己不会的东西!否则你会被问到怀疑人生!
  • 简历上不要轻易的写熟练!否则你也会被问到怀疑人生!
  • 面试过程中学会引导面试官很重要,一定要你占有主动权,这样你才能把你会的说出来。一般面试官不打断你,你就继续说,能说多久说多久。这样会让面试官觉得你很有钻研精神。
  • 找个靠谱的内推人非常重要。不仅能给你很多帮助,并且在你焦急等待的时候也有人能问问。
  • 多看面经多刷题
  • 记得录音,面试结束后复盘,听听自己当时的回答,然后总结反思怎么做的更好
总的来说我的春招到此结束。马上就要入职了(去了跟谁学)。回想一下,还是觉得挺有意义的。面试过程也是一个成长的过程。一次次的挑战自己,怀疑自己,完善自己的过程。这个过程十分痛苦,但是一定要相信自己,坚持走下去,一定会有胜利的那一天。
文末 今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

【面试|【2020春招】英国硕士历时三个月的Android开发岗春招总结贴(拿到双Offer)】希望各位朋友们最后都能拿到自己心仪的offer!

    推荐阅读