2019Android阿里&腾讯&百度&字节面试汇总(附面试题总结、Android书单)

一、基本状况

先简单说说我今年的面试经历吧,本人2018届211软件工程硕士生,Android开发岗。此文主要是2019年年初春招的面试和秋招面试经验汇总,最终拿到了阿里,腾讯,字节跳动,百度等offer。前端

如下的部分有具体的面试经历,也有本身的一些总结面试必备技能和本身的一些感想。程序员

在这面试刷题过程当中我搜集整理了全套移动互联网开发面试题(精编含解析),以及备战面试所需电子书、面试视频等资料。 这份面试文档主要包括Android基础面试题、Android高级面试题、移动互联网开发Java面试题、移动互联网开发Flutter面试题、以及2019大厂Android面试题。面试

电子书主要包括《Java核心技术》、《Java并发编程的艺术》、《深刻理解Java虚拟机》、《Android开发艺术探索》、《Android源码设计模式》、《Android进阶之光》、《Android Gradle权威指南》、《大话数据结构》、《剑指offer》、《操做系统概念》、《图解HTTP》分享出来。点击我 前往免费领取。话很少说,咱们先看面试经历。算法

二、阿里面试

阿里面试很喜欢问源码,优化,原理,涉及到的范围很广,仍是具备必定挑战性的。这里提炼了一下阿里四面的核心面试题。编程

项目:项目立意谈起,到设计,再到详细的技术实现,可谓是面面俱到,遇到什么问题设计模式

算法:c语言程序,return0 就退出了,为何你写的andriod app 一行一行代码执行了不会退出数组

设计模式:用过哪些设计模式安全

Android:对Android什么地方最熟悉,有没有遇到OOM问题,有没有遇到内存泄漏问题,怎么解决;Handler机制原理;ThreadLocal做用及原理;Activity启动到加载View过程;View绘制过程;OKHttp框架(1. 为何选择它 2. 性能 3. 内部有哪些设计模式);EventBus框架;动画框架的源码服务器

Java:private protected public 关键字的用法区别;接口,抽象类区别,抽象类要不要实现接口的方法;Map的线程安全,读多写少选哪一个集合;bitmap存储的位置 安卓几个版本有什么不一样;jvm分区 栈溢出是什么 栈里面存了什么网络

网络:HTTP/HTTPS区别;TCP是什么,TCPUDP区别;握手与挥手过程;三次握手 第二个包丢了会咋样;长链接;服务器推送怎么实现。

三、腾讯面试

腾讯面试涉及到的范围也很广,甚至问到了C++、Kotlin +Flutter ,也具备必定挑战性的,如下包括腾讯腾讯安卓客户端三面,最终拿到了测开岗位offer,腾讯面试过程当中的感受就是不少我不太熟悉的知识点都被问到了,甚至是不知道的知识点,但总体面试官给人的体验还不错,通常会提早打电话沟通面试时间。

C++:class与struct区别

项目:介绍项目,有什么难点;

Java:HashMap;ArrayList,LinkedList用法有什么要注意的;注解介绍下;泛型中类型擦除是什么

算法&数据结构:字符串中出现频率中位数;最长公共子串问题LCS;线段树;B+树;快排及时间复杂度多少;七大排序;二叉树原理;红黑树

Android:OkHttp,OkHttp使用须要注意什么;RxJava介绍下;Activity四种启动模式;一个APP怎么退出全部Activity,若是有第三方SDK Activity,又怎么退出;EventBus原理;app卡顿;

Kotlin :协程

Flutter :生命周期

四、字节跳动面试

字节面试比较注重基础,尤为是算法。包括在线写题,数据结构,Java基础,JVM基础,操做系统等;如下包括实习3面;字节面试是一天内走完全部技术面试流程,每一面结束后若是经过则15min左右就开始下一轮面试,所有为视频面试。

项目:介绍项目

Java:线程同步问题(为何须要同步&怎么实现同步);泛型;上界通配符和下界通配符;

设计模式:单例模式(静态内部类);其余设计模式简介

数据结构:排序算法,归并/快排(实现原理/平均复杂度/可否提早结束/谁性能更优), 堆排(怎么实现调整堆结构/k个最大的数);

算法题:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组;Top K度算法题,给定一个数组,求前n个最大的数,堆排序; 判断一个view的父类或者父父类是否为listview

五、 百度

百度是现场面试,一共三面没有HR面,第三面是总监面,兼顾技术面与非技术面试,百度的面试官都很是友好,一面技术问的比较细,二面重项目,三面考察人际交往、沟通、管理能力。

项目:项目介绍;项目中的编码规范

Android:Android四大组件安全性;Activity的生命周期经过什么机制来通知;IntentFilter匹配规则,action和category区别;Handler阻塞为何不卡死;事件分发机制,onTouchEvent返回false处理流程, dispatchTouchEvent返回false处理流程;Looper是什么;对象池,手写对象池实现;ContentProvider原理;sp支持跨进程么,怎么解决跨进程,怎么实现进程同步;以100ms/张的间隔时间播放100张图片,且每张图片须要400ms进行加载,如何设计;Bitmap内存复用限制条件;内存泄漏;

操做系统:线程时间片分配原理

算法:如何在无序数组中快速找到最小值(手撕二分查找算法)

六、总结

6.一、 高频面试题总结

如下是本人从这些大厂提炼的Android高频面试点总结:临阵磨枪,不快也光。

  1. Android四大组件,Activity生命周期,Fragment
  2. Handler,Looper,ThreadLocal,事件分发机制,View绘制过程,Activity启动过程
  3. 内存泄漏,OOM,图片加载,ANR,ART与Dalvik虚拟机
  4. 多线程,多进程,死锁
  5. HTTP、HTTPS、TCP、UDP
  6. HashMap及其他Java集合 内存分配,回收算法,GC,堆栈区别,类加载机制
  7. volatile,synchronized,Lock
  8. MVC,MVP,MVVM,单例模式,观察者模式

2019Android基础面试题目录2019Android高级面试题目录2019Java面试题目录2019Flutter面试题目录2019大厂Android面试题目录

上述高频面试点所有都已经整理到了这份349页全套Android面试文档(含答案解析)里了,该文档还涵盖了Android初级、高级、Java面试题、Flutter面试题、2019大厂Android面试题总结。上述面试题集锦均是我从网上搜集下载而来,并进行了补充、修改和整理。正式由于平时养成了记录总结的良好习惯,本身也所以受益不浅。不少朋友的资料库都比较凌乱,包括我曾经也是如此,找资料、找面试题都要花费很长时间。今天我把这份面试文档分享出来,但愿能帮助到有须要的朋友,点击我 前往免费领取

6.二、 面试心得

面试首先通常都会有个自我介绍,能够事先准备下1-2min的自我介绍,不用过于拘束,也不用过于复杂,简单介绍,名字,年龄,毕业于哪,几年工做经验,也可诉说本身擅长哪方面技术,固然了除了工做以外,不妨加上本身还学习什么,有没有成果展现,这块主要体现本身的学习能力。好比能够说,除了工做以外,本身还自学了前端,并运用学到的技术,作了一个网站。

Android岗位面试内容较广,须要作到各方面知识都要了解,在了解的基础上不断深耕。 现场面试的体验通常优于电话or视频面试,由于面对面交流更有效清晰。 至少作一个拿的出手的项目,一是面试时能够聊起来,二是简历有干货,三是经过作项目能够熟悉那些开源工具 Android岗位通常算法题要求不高,刷完《剑指offer》大部分就能应对了。

6.三、 建议

主要针对非科班同窗:最好系统的看下操做系统和计算机组成原理,推荐清华大学陈渝的操做系统公开课,由于看完操做系统后才能系统的认识计算机的原理,能更好的从底层去认识上层 多看源码,包括Java层的代码在JVM中的实现源码(如synchronized的实现源码),Android Framework的源码(更好认识Android层的实现),Android开源库源码(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson等等,更好的学习优秀开源库源码,作到用的熟,懂原理) 多问本身为何,好比两个技术点优缺点分别在哪,各自的使用场景(如单例模式下饿汉与懒汉的优缺点,使用场景),这样才能更契合实际应用开发,针对不一样场景使用不一样技术点 及时复盘总结面试中遇到的问题,分为两方面,一是知道但不能深刻的,这种须要继续多看多总结,另外一种是没接触过的,这种能够先了解下,万一面试又遇到了,能够回答下了解到的,以后再去深刻总结(毕竟时间有限,不可能面面俱到,只能不断学习总结)

6.四、 资源

学习天然少不了书籍、市面上的书籍也是琳琅满目,书籍的筛选也须要花时间,资料的搜集整理更是如此,我整理好了这份Java书单、Android书单、算法书单、操做系统书单、计算机网络书单,如下书单都可分享给读者点击我 前往免费领取。

6.4.一、 Java书单

《Java核心技术》:Java基础知识

Java核心技术PDF

《Java并发编程的艺术》:并发知识集合 《Java并发编程的艺术》读书摘抄

Java并发编程的艺术PDF

《深刻理解Java虚拟机》:虚拟机知识集合

深刻理解Java虚拟机PDF

6.4.二、 Android书单

《Android开发艺术探索》:Android四大组件原理,部分Framework源码,图片高性能加载,多进程Binder原理等等

Android开发艺术探索PDF

《Android源码设计模式》:设计模式,Android源码中采用的设计模式;MVC,MVP,MVVM

Android源码设计模式PDF

《Android进阶之光》:各类Android开源框架源码解析

Android进阶之光PDF

《Android高级进阶》:Android系统启动流程,Activity启动流程,JNI,ART虚拟机,热修复,插件化等原理

Android高级进阶PDF

《Android Gradle权威指南》:了解Gradle原理

Android Gradle权威指南PDF

6.4.三、 算法书单

《大话数据结构》:基本讲了常见数据结构,且图文丰富,清晰易懂

大话数据结构PDF

《剑指offer》:刷题

剑指offer PDF

程序员代码面试指南 IT名企算法与数据结构题目最优解 ,左程云著

程序员代码面试指南PDF

6.4.四、 操做系统书单

《操做系统概念》:操做系统基础概念

操做系统概念PDF

6.4.五、计算机网络

《图解HTTP》:图文丰富,简单易懂介绍HTTP协议

图解HTTP PDF

上述电子书集锦,都可免费分享,点击Android相关电子书 前往领取

分享不易,动动大拇指给个鼓励的赞呗--<-<-<@