15家Android大厂offer!看我2020面试经历!

百词斩

一面(视频)

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.voliateinta++? 会被立刻看到吗?

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】

你可能感兴趣的:(15家Android大厂offer!看我2020面试经历!)