写点什么

盘点 2020 年 Android 面试必备知识点

用户头像
Android架构
关注
发布于: 5 小时前

这一块,比较重要的是多线程同步异步,java 虚拟机内存回收,容器,面向对象这些知识点。就单单是多线程和虚拟机都可以看好几本专门讲解的书了,其他知识点就多啃啃 java 编程思想,遇到不懂在多翻翻博客加深理解。

Android

这一块,异步机制,view 的绘制,自定义控件,四大组件都非常重要。不管是 android 或是 java 都最好看一些源码,java 可以看一些容器的源码,android 可以看 handler%2clooper%2cmessage 等异步通信的源码或是一些开源框架的源码,会看源码绝对是加分项。

计算机网络

可以注重看上面几层,传输层注重研究。一般来说,前面这几点掌握好了,足以聊好几轮面试,一般面试官你都可以引导他去聊一些你擅长的知识点。后面几块知识点,你可以先掌握一些比较重要的,不一定每次面试都会遇到,但是也得准备。


上面是提供一些大概的思路,下面具体说一下每一块的知识点


一、数据结构与算法


推荐书籍:大话数据结构,数据结构与算法分析(java 语言描述),剑指 offer,进军硅谷。(可以私信我)


推荐在线刷题网站:Leetcode(LeetCode Online Judge),Lintcod(LintCode - 主页),牛客网(在线编程_C++Java 前端经典笔试面试题库)


推荐方案:主要做三件事


1, 先看一遍大话数据结构,熟悉一些基本概念,大话这本书只讲了一些基本的数据结构,像是 B 树,B+树,红黑树需要自己看一些博客或是网站,推荐一个讲解算法的网站-七月算法,另外海量数据处理也是一个经常考的专题,它结合了数据结构和操作系统的一些知识,这个需要进行针对性准备。


2,然后开始刷题,最推荐的肯定是 leetcode,刷题建议按照标签进行刷题(比如队列,栈,哈希表),刷题从易到难,最好能够刷一百题左右,如果一天一题,至少要三个月以上,所以这个耗时比较长,要从比较早开始准备。进军硅谷这本书有按照专题进行编排,基本上的题目来自 leetcode,可以作为一个参考。


2, 然后要分析一些常见数据结构的源码实现(比如队列,栈,hashmap 之类的),数据结构与算法分析这本书有讲一些,可以结合一些博客进行准备。


二、Java


找程序员工作,大多数情况下需要掌握好一门面向对象的语言,主流上分为 Java 和 C++两大阵营。这里讲 Java 需要怎么准备。


入门书籍:Java 核心技术卷一,Head first in java(如果一点面向对象的概念都没有那就看这本)


提高书籍:Java 编程思想


Java 虚拟机:深入理解 Java 虚拟机


Java 多线程:Java 多线程编程核心技术,Java 并发编程实践


其实我觉得如果有一定基础建议直接看 Java 编程思想,面试中的考点经常都会在这本书中有讲到。当然 Java 虚拟机和多线程这两块需要再看一些专门讲解的书,每一次 java 面试考查内容几乎都离不开这两块。


总体来说 java 考察内容包括以下这些: 1,面向对象的一些基本概念:继承,多态之类的


2, 抽象类和接口


3, 静态类,内部类


4, Java 集合类,同步和非同步


5, Java 类加载机制


6, Java 内存模型和垃圾回收算法


7, 线程同步机制(volatile、synchronized 重入锁,threadlocal),线程间通信(wait、notify)


8, 异常处理


9, 多线程同步问题,生产者消费者,读者写者,哲学家就餐,用 java 实现


10, 了解 java 中设计模式的思想,用了哪些设计模式,有什么好处


三、Android


入门书籍:第一行代码。


提高书籍:Android 群英传,Android 开发艺术探索。


上面的书看好了,一般问题不大。主要问的一些问题:


1, Activity,Service、BrocastReceiver、Intent、Fragemnet、ContentProvider,这些组件的基础知识,比如 Activity 两种启动方式,生命周期,四种启动模式,Service 则主要是:两种启动方式,生命周期。还有组件之间怎么通信之类的问题;


2, Android 的数据存储方式,数据库,sd 卡,SharedPreferences 这些;


3, Listview 的优化,与 scollview 的区别;


4, view 状态与重绘,view 的绘制过程,view 的事件分发机制,view 的事件冲突处理;


5, Android 多线程异步机制,AsyncTask 工作原理与源码实现,Handler%2cMessage%2cLooper 异步实现机制与源码分析;


6, Android 常见的开源框架(主要是网络通信,图片加载这些),了解怎么使用,分析源码;


7, Oom 和 anr 异常引发的原因,怎么解决;


8, 了解一些常见的图片缓存技术。


四、计算机网络


推荐书籍:计算机网络自顶向下,tcp/ip 协议详解卷一


主要看:主要看应用层,传输层,网络层,其中传输层最为重要。主要的一些考察内容有:


1、 TCP 和 UDP 的区别;


2、 TCP 的三次握手,和四次挥手,为什么需要三次握手,为什么要四次挥手(这两个为什么要考虑非常清楚);


3、 TCP 拥塞控制算法(慢启动,拥塞避免,快速恢复),流量控制算法,滑动窗口协议,选择重传;


4、 TCP 可靠性是怎么保证的(通过哪些机制保证)?


5、 HTTP 协议报文格式,请求方法字段以及各个方法之间的区别,了解常见的响应状态码,了解 cookie 机制,了解 WEB 缓存技术(条件 get 方法);


6、 DNS 协议的各层域名服务器,两种查询方式(递归和迭代),dns 缓存;


7、 Udp 的特点,适用场景,校验机制;


8、 从输入一个网址到最后网页显示整个过程发生了什么?


9、 IP 地址组成,ARR、RARP、ICMP 协议,路由选择算法这些。


就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我


我的【Github】会分享一些关于 Android 进阶方面的知识,也会分享一下最新的面试题~

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
盘点2020年Android面试必备知识点