zoukankan      html  css  js  c++  java
  • 2019Android阿里&腾讯&百度&字节面试汇总(附面试题总结、Android书单)

    1、基本情况

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

    以下的部分有具体的面试经历,也有自己的一些总结面试必备技能和自己的一些感想。

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

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

    2、阿里面试

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

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

    算法: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区别;握手与挥手过程;三次握手 第二个包丢了会咋样;长连接;服务器推送怎么实现。

    3、腾讯面试

    腾讯面试涉及到的范围也很广,甚至问到了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 :生命周期

    4、字节跳动面试

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

    项目:介绍项目

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

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

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

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

    5、 百度

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

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

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

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

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

    6、总结

    6.1、 高频面试题总结

    以下是本人从这些大厂提炼的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.2、 面试心得

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

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

    6.3、 建议

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

    6.4、 资源

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

    6.4.1、 Java书单

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

    Java核心技术PDF

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

    Java并发编程的艺术PDF

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

    深入理解Java虚拟机PDF

    6.4.2、 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.3、 算法书单

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

    大话数据结构PDF

    《剑指offer》:刷题

    剑指offer PDF

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

    程序员代码面试指南PDF

    6.4.4、 操作系统书单

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

    操作系统概念PDF

    6.4.5、计算机网络

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

    图解HTTP PDF

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

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

  • 相关阅读:
    Hibernate 3入門
    如何调整液晶显示器保护你的视力
    WEB前端开发经验总结实战篇
    【JS】引用类型之Array
    Oracle的DBA管理常用sql
    使用cos组建上传文件
    前台js将json转换成json对象的方法
    关于父页面访问iframe中元素和js的那点事
    数据库中IN和EXISTS的区别
    关于google浏览器有时莫名自动提交表单的问题
  • 原文地址:https://www.cnblogs.com/Android-Alvin/p/12073675.html
Copyright © 2011-2022 走看看