文章图片
前言 本人英国水硕。去年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)
算法: 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的区别
算法:快排、二分
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怎么处理
- 加载过程
- 收获最大,在学校学习哪些点帮助最大,难点最大
- 在学校或者实践当中碰到的困难的点,怎么解决的
- 迭代器怎么完成的
网易三面 总监面 3月17日 下午15:00 41min (挂)
- 自我介绍
- 项目问题
- SurfaceView的特点(因为项目用过)
- SurfaceView的缓存机制
- Android读过什么源码(讲了okhttp的一些缓存策略和失败重连)
//有char型数组words,由空格以及字母组成。我们定义被空格隔离开的字符序列为一个单词。现需要对其处理,把连续的空格换成一个空格,把单词的首字母大写。要求:1. 在原有数组上操作,不得开辟新的数组空间。 2. 性能也要考虑优化。
//void processWords(char[] words)
有道的三次面试除了第三次的总监面,其他两次还是相当愉快的。三面的面试官,估计开的双屏面试,全程几乎没有怎么看我(可能是压力面吧),都在盯自己的屏幕,回答问题也不肯定也不否认的那种。
挂的原因觉得可能还是我的项目太简单了吧。没啥亮点。
文章图片
美团(一面挂) 美团点评一面 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 工作原理
- 项目
常规问题
4月1 总监面(20min)
- 玩啥游戏
- 为啥喜欢玩这游戏
- 为什么想做编程
- 为什么走Android
- 项目介绍一下
- 最大的问题
- 闲暇时间做啥提高编程能力或者安卓的能力
- 最大的优势
- 举个例子
- 回想这段经历什么感觉
- 新技术去哪里接触
- 对你影响最大的app或者公司
- 有啥想问的
闲聊了一会
- 什么是线程,什么是进程?
- 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中播放视频音频的方式有哪些
- 说说你知道的查找算法
- 自我介绍
- 有什么offer
- 家里同不同意你来北京 有没有兄弟姐妹
- 学校分数,排名
- 对我们公司有什么了解
- 线上教育线下教育的优缺点
- 最有挑战的事情
- 怎么解决
- 朋友怎么评价你
- HTTP(从协议,状态码,1.0/1.1跟2.0 扯了一堆)
- 最消极的词评价自己
- 最近看的3本书
- 学到了什么
- 最有成就感的事
- 为什么这件事给你成就感
- 知道我们公司有哪些竞品吗
- 觉得自己三个短板
- 怎么克服
- 刷了多少LeetCode
反问环节
算法:
统计使用数 TOP 1 的标签。
现有数据:[{tagName: 'p'}, {tagName: 'div'}, {tagName: 'p'}, ....],
请统计出现次数 TOP 1 的 tagName。
总结 我大四就到国外去读书了,从来没有实习过(出国前的暑假确实有时间可以去实习,但是都被我浪费掉了) 所以相对于一直在国内的同学,大四就开始实习,在这一块有着明显的劣势。
之前学校里学的都是什么数据挖掘机器学习这些,跟我要找的安卓开发,知识上还是差的挺多的。以前很多学过的也都忘记了。
所以我基本上是从头开始学的。我看的书大概就这些:
- 操作系统:深入理解计算机系统
- 计算机网络 : 谢希仁的计算机网络
- 数据结构和算法: B站视频
- Android:Android的进阶之光
- 算法:剑指和LeetCode
- 简历上一定不要写自己不会的东西!否则你会被问到怀疑人生!
- 简历上不要轻易的写熟练!否则你也会被问到怀疑人生!
- 面试过程中学会引导面试官很重要,一定要你占有主动权,这样你才能把你会的说出来。一般面试官不打断你,你就继续说,能说多久说多久。这样会让面试官觉得你很有钻研精神。
- 找个靠谱的内推人非常重要。不仅能给你很多帮助,并且在你焦急等待的时候也有人能问问。
- 多看面经多刷题
- 记得录音,面试结束后复盘,听听自己当时的回答,然后总结反思怎么做的更好
文末 今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~
【面试|【2020春招】英国硕士历时三个月的Android开发岗春招总结贴(拿到双Offer)】希望各位朋友们最后都能拿到自己心仪的offer!