十投九挂!!!Android岗的面试到底该怎么准备?

金九银十面试季啦,很多朋友反映:简历投了那么多,一个面试邀约都没有,有的是面了一两次就挂了,怎么办?是我的简历做的不好吗?还是我的技能不过关,我就是一个菜鸡?甚至有朋友因此信心大受打击,一蹶不振。

为了帮助大家提高面试的过率,今天在这里特意做一些分享吧。
PS:以下内容来自我们群里一个十投十中的大佬的经验总结,大家记得好好看完,或者先收藏,后面慢慢看。


大厂 Android 岗面试经验分享

笔者自身的条件其实很普通,双非学校,普通本科,面了今日头条、网易云音乐、快手、百度、阿里巴巴、腾讯、WPS等一共八家,都拿到了offer。

通过面试总结发现,其实Android岗的面试都是差不多的。常问的这几块知识点,按照其重要程度排序,笔者认为可以这样排:

  • 数据结构与算法,
  • Java,
  • Android(如果不找安卓的就去掉这部分),
  • 计算机网络,
  • 操作系统,
  • 设计模式。

下面就按照这个重要性顺序给出一些准备的建议。

数据结构与算法模块

大家可以看这个:《最短时间搞定算法:字节跳动Android岗算法题考前突击宝典》
当然,学习和积累都是功在平时,指望临时抱佛脚的思想是非常危险的。这个分享只给那些时间仓促,没有办法的朋友,不过时间充裕的朋友也可以当做一个查漏补缺和重点突破的方向。

下面说一下我个人的学习方法推荐。

学习书籍推荐:

  • 《算法导论》
  • 《大话数据结构》
  • 《数据结构与算法分析》(PS:java语言描述)
  • 《剑指offer》
  • 《labuladong的算法小抄》

推荐在线刷题网站:

  • 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面试考查内容几乎都离不开这两块。

一般来说,java考察内容包括以下这些:
1,面向对象的一些基本概念:继承,多态之类的
2, 抽象类和接口
3, 静态类,内部类
4, Java集合类,同步和非同步
5, Java类加载机制
6, Java内存模型和垃圾回收算法
7, 线程同步机制(volatile,synchronized,重入锁,threadlocal),线程间通信(wait,notify)
8, 异常处理
9, 多线程同步问题,生产者消费者,读者写者,哲学家就餐,用java实现
10, 了解java中设计模式的思想,用了哪些设计模式,有什么好处
……

内容比较多,后续做了专门的整理。

Java模块知识要点整理

1、深入理解Java泛型

  • 泛型的作用与定义
  • 通配符与嵌套
  • 泛型的上下边界
  • RxJava中深入理解泛型

2、注解深入浅出

  • 注解(ANNOTATIONS)
  • 元注解
  • 自定义注解
  • APT
  • 插桩
  • 反射
  • Retrofit中的注解

3、并发编程

  • ……

4、数据传输与序列化

  • ……

5、Java虚拟机原理

  • ……

6、高效IO

  • ……

内容较多,都以PDF的格式整理成文档了,大家可以通过扫描下方二维码,备注【面试】直接找我获取。
↓↓↓↓↓
请添加图片描述

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,Message,Looper异步实现机制与源码分析
6, Android常见的开源框架(主要是网络通信,图片加载这些),了解怎么使用,分析源码
7, Oom和anr异常引发的原因,怎么解决
8, 了解一些常见的图片缓存技术

Android常问知识点整理

1、高级UI晋升

  • 触摸事件分发机制
  • View渲染机制
  • 常用View
  • 布局ViewGroup
  • 自定义View实战

2、Android组件内核

  • Activity调用栈
  • Fragment管理与内核
  • Service内核原理
  • 内核之组件间通信方案
  • 组件间通信方案

3、大型项目必备IPC

  • Binder 原理机制
  • 其他 IPC 方式
  • ……

4、数据持久化

  • Android文件系统
  • 轻量级Kv持久化
  • 嵌入式数据库 SQLite
  • ……

5、Framework内核解析

内容较多,都以PDF的格式整理成文档了,大家可以通过扫描下方二维码,备注【面试】直接找我获取。
↓↓↓↓↓
请添加图片描述

计算机网络模块

书籍推荐:

《计算机网络自顶向下》
《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协议,路由选择算法

最后

码字不易,希望大家点赞支持一下。
PS:文中资料都是免费分享的。直接扫码找我就行啦~ 记得给本文三连支持哦~

posted @ 2021-09-10 09:32  打王者的女程序员  阅读(156)  评论(0编辑  收藏  举报