百词斩
一面(视频)
1.内部类和静态内部类的区别
2.如何使一个类不能被继承
3.写一个单例模式,保证线程安全的
4.如果你写的这个单例被继承,然后多次实例化,还是单例吗(提示构造方法是private的类不能被继承)
5.代码:带括号的表达式求值,如:1加(3减2)
6.网络五层架构,http在哪一层
7.tcp和udp的区别
8.tcp三次握手过程,为什么要有第三次
9.数据库事务四个性质,一致性是什么
10.死锁是什么,怎么产生,如何避免
11.数组和链表的区别
12.二叉排序树是什么,查找的时间复杂度,怎么降低时间复杂度
13.项目有什么难点
二面(视频)
1.Dalvik和ART的区别
2.虚拟内存是什么
3.CPU32位和64位区别,Android CPU是多少位的
4.手机内部存储目录是什么样的,能不能访问其他应用的目录
5.网络五层架构
6.TCP和UDP的区别,应用场景
7.拥塞控制、流量控制的原理
8.HTTP能用UDP吗
9.HTTP的header有哪些字段,哪个是必须有的
10.HTTP状态码3开头、4开头各是什么意思
11.POST和GET的区别,POST的参数能不能放在url
12.浏览器输入网址到返回网页的全过程
13.进程和线程的区别
14.代码:输入参数x和y,求x的y次方,用尽可能小的复杂度,并分析时间复杂度
15.代码:二叉树遍历,任意写一种
16.1T大小的文件,内容是“用户名 背单词数”的列表,一个用户可能有多个记录,如何找出前十名
17.给一个数组,讲出快速排序第一次划分的过程
18.数据库事务是什么,有什么用
19.说下数据库的索引
20.手写SQL语句:分页,排序,多表连接
21.SQLite如何从版本1升级到100
22.char能不能存汉字
23.int a = new Integer(3)会不会报错
24.int可以表示的范围
25.float怎么存储的
26.catch中return了,finally还会不会执行
27.有几种创建进程的方法
28.有几种创建线程的方法
29.Java中实现线程互斥有哪些方法,synchronized怎么用
30.抛n个硬币,m个正面朝上的概率
31.如何不用额外空间交换两个数
32.给定一个三角形和一个点,判断点是否在三角形中
HR面(视频)
1.你是福建人,为什么想来成都
2.为什么选择自动化专业
3.是怎么想到从事Android的
4.父母是做什么的,同意你到外地工作吗
5.对公司文化了解多少,怎么了解的
6.暑假在脸萌实习感觉怎么样,喜欢吗
7.未来的职业规划
8.期望薪资
9.有没有其他offer,有没有还在面试的
技术面没怎么问项目,考官也说对应届生还是更看重基础和潜力。HR面的时候其实已经稳了,就是沟通一些offer的情况,隔天就发来了offer。十分万幸赶上了秋招末班车,结束两个月的陪跑!在此感谢牛友们的面经分享和一路的陪伴!
字节跳动
从阿里实习回来后,投了字节跳动的秋招内推,因为一直听说头条的面试比较快,通过了就会有一下轮,所以想体验一下,投的是上海的研发岗位,下面是头条面试的面筋
一面
1.自我介绍
2.介绍SS助手项目
3.介绍下Retrofit框架,retrofit为什么要包装okhttp呢?
4.retrofit的常用配置有哪些?
5.android的序列化对象的两种方式?
6.序列化对象用在什么方面?(没回答全)
7.Android的handler的postdelayed原理?postdelayed设置定长时间等待,中间有又message来了怎么办?
8.Android为什么要让主线程绘制UI呢?
9.Android自定义view需要哪些步骤?要绘制一个正方形的view要怎么办?
10.Android的viewgroup的onlayout函数做了什么?(忘记了)
11.https的原理
12.http请求一定会到服务器上去吗?(http304``/ 有***的情况不会)
13.负载均衡讲下理解
14.远程写代码:用数组实现双头栈
二面
1.自我介绍
2.tcp的三次握手和四次挥手
3.tcp挥手的time_wait状态的设计目的是什么?如果没有,会出现什么情况?
4.tcp和udp的区别?
5.udp上实现一个可靠的协议要怎么做?
6.tcp的拥塞控制的作用是什么?为什么要实现拥塞控制?
7.java 的hashmap和hashtable的区别?
8.hashmap在多线程下会出现的问题?
9.concurrenthashmap的原理?为什么效率高?
10.android ipc 通信机制?
11.localsocket在什么情况下用比较合适?
12.为什么android要设计binder
13.java线程间同步有哪些?
14.sync关键字和lock的区别?
15.公平锁和非公平锁的区别?
16.voliate作用于boolean``,Boolean的区别?
17.voliateint
a++? 会被立刻看到吗?
18.远程写代码:一个数组有1
个数字出现了一次,其他数字出现了三次,请问不用map的情况如何找到这个只出现了一次的数(不会)
19.远程写代码:二叉搜索树中第K小的元素
20.activity的onSavedInstace在什么调用?
21.一个process要被杀死,onSavedInstace会不会调用?(不知)
22.activity的onNewIntent何时被调用?
22.你有什么问题要问的吗?
三面
1.介绍下在淘宝实习期间做的项目
2.Gcavans的原理介绍下?
3.Flutter的架构介绍下(这里没有回答好)
4.activity A->B 的生命周期
5.binder 的架构模式
6.上述生命周期中,activity A 可不可以不调用onStop方法?(B是一个透明的Activity)
7.Fragment.startActivityForResult vs Activity.startActivityForResult (不会)
8.sharedPreference原理?commit和apply的原理?apply会导致ANR吗?(面试官说apply也会)
9.sharedPreference 可以跨进程吗?(不知道)
10.远程写代码:删除一个整数数组中value为50
的数字,并且返回最终的长度
11.位置无关性代码的优势?
12.虚拟内存的优势?
13.你有什么问题要问的吗?
加面
1.自我介绍
2.flutter对比android 原生开发优劣
3.项目里面的难点
4.对新的框架怎么看
5.你的优点是什么?
6.场景设计题:类似微信聊天的页面
7.你有什么要问的吗?(问了下部门,貌似是抖音客户端的)
总结
头条的面试,问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码
因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
如果需要PDF版本可以在群文件夹里,自行领取!
-
或者在群文件夹中里,自行下载直达领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】