当前位置:网站首页>备战金九银十,如何顺利通过互联网大厂Android的笔面试?
备战金九银十,如何顺利通过互联网大厂Android的笔面试?
2022-08-01 04:54:00 【Android女王】
前言
如果您在今年作为一名即将求职的程序员,那么您在这个特殊时期,你的就业机会和就业方向会出现在哪里或哪个地方呢?在这种特殊时期的环境下,你的工作应该是选择在大厂呢还是决定待在小公司呢?已在这个行业有几年工作经验的你们,又应该如何保持并提升自身竞争力,将被动转为主动?
就现在的大环境来看,想跳槽成功的难度比往年都高了很多。就拿现在一个明显的面试来看:今年的面试,无论一面还是二面还是三面,都在考验Android程序员的技术功底和知识存储能力。
那么接下来我将分享一些面试题,希望能够在有限的能力对大家有所帮助!本面试题集只适用于Android求职的相关人员。
一 JAVA相关
1)JAVA基础
- java基本数据类型有哪些,int, long占几个字节
- new String创建了几个对象
- == 和 equals有什么区别
- 位运算符的一些计算
- hashcode 和 equals作用
- java的拆装箱
- compareable 和 compartor的区别
下面列一两个遇到的题吧
`基本数据类型,
int大小,一个字节占几位,int的取值区间。Integer a =123456Integer b =123456return` `a==b 如果a = a b =1结果呢`inta = ``2``;``intrusult = a++ + ``4``<<``2求 result的值publicstaticString fun(String s) {`` ``returns.length() < ``0? (fun(s.substring(``1``) + s.charAt(``0``))) : ``""``;`` ``}System.out.println(``"result = "+ fun(``"Smart"``));它的打印结果是什么。
类似这种的题很多,考察的都是基础知识的牢固性。所以需要自己多巩固基础。
2)数据结构和算法
常见的数据结构就是:数组,栈,队列,集合,映射,链表,堆,二分搜索树,红黑树。当然还有其他的一些,比如AVL平衡树等一些数据结构。
我们要做的就是了解它们的实现原理和各自的优缺点。
数据结构部分面试遇到最多的就是:
- ArrayList和LinkedList的区别,优缺点
- 链表需要知道。LinkedHashMap一般再问LRU的时候会问到
- 二分搜索树的特性和原理。前中后序遍历写出其中一种,当问到二分搜索树的缺点的时候,你需要提出基于二分搜索树的红黑树,说出他的特性。
- hashmap实现,扩容是怎么做的,怎么处理hash冲突,hashcode算法等
- 堆的实现,最大堆,最小堆,优先队列原理。
算法
算法其实就是我们平时常见的一些排序:选择排序,插入排序,冒泡排序,希维尔排序,归并排序,快速排序。以及和数据结构相关联的解决部分问题的一些计算方法。
算法面试遇到的一些题:
- 手写快速排序,插入排序,冒泡排序
- 翻转一个数字
- 翻转一个链表
- O(n)复杂度找出数组中和是9的两个数的索引
- 写出二分搜索树前中后序遍历中的其中一个
- 实现一个队列,并能记录队列中最大的数。
算法这一块是需要练习的推荐去Leetcode上面刷刷题,开拓一下思维。算法也并不一定要求你能写出来,主要考察你的思路,已经如何优化你的算法。
3)JVM虚拟机
JVM虚拟机我们需要知道他们内部组成:堆,虚拟机栈,本地方法栈,方法区,计数器。每一块都存放什么东西,以及垃圾回收的时候主要回收哪些块的东西。GC-ROOT链是从哪些地方开始的,垃圾回收集算法(很少遇到问的)。
类加载ClassLoader已经双亲委派机制,类加载的过程,类加载的信息对应在JVM的哪些块中。
4)线程安全
当多个线程访问一个对象的时候,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获取正确的结果,我们就认为这个对象时线程安全的。
线程安全就是一些多线程下载,同步,锁,死锁,线程池。volatile关键字的特性,变量的原子性。以及java.util.concurrent包下的类,也需要了解一下。
一般会问的是手写单例,以及双重锁式单例的优点。还有就是让你自己实现一个多线程下载,看你怎么设计。
5)编程思想
封装,继承,多态,抽象,反射,注解,设计模式,设计模式的原则。
面试中一般会问下:
- 抽象和接口有什么不一样
- 工作中常用的设计模式,一些源码中的设计模式
- 具体给你一个设计模式让你说说你对他的了解,比如观察者,工厂。
以上这些东西主要考察你的代码设计能力。
6)网络协议
- 互联网的实现主要分为几层,http、ftp、tcp、ip分别位于哪一层。
- http和https的区别
- 为什么tcp要经过三次握手,四次挥手
- socket了解过吗
一般http和https问的比较多,对称加密和非对称加密也会问。tcp和socket偶尔遇见问的。
二 Android相关
Android部分我就不分几大块了。直接列举,但是列举到的每一项都是面试经常会问到并且会延伸问的,所以需要深入的去研究。
- 四大组件有哪些,说出你对他们在Android系统中的作用和理解。
- Activity生命周期,A启动B两个页面生命周期怎么运行的,为什么会这样,生命周期为什么这么设计,你有了解过吗。
- 四种启动模式,内部堆栈是怎么回事,你工作中怎么使用的。
- Activity的启动过程,这个我强烈建议每个Android开发人员都要清楚的知道,并且跟一下源码,几个核心类的作用。你会对Android有一个更好的认识。
- 事件分发流程,怎么处理滑动冲突。举例:长按ListView的一个Item它变灰了。这个时候在滑动。item恢复原来的样子,这个时候他们内部的事件传递是什么样子。有很多种问法,所以你一定要搞清楚。
- 自定义View,View的绘制流程。onMeasure,onLayout,onDraw都是什么作用。ViewGroup是怎么分发绘制的。onDraw里面怎么去做绘制,Canvas,Path,Paint你都需要了解。并且配合ValueAnimtor或者Scroller去实现动画。有时候面试的会突发奇想问你ViewGroup是树形结构,我想知道树的深度,你怎么计算,突然就变成了一个数据结构和算法的题。
- Bitmap和Drawable
- Animation和Animator
- LinearLayout、RelativeLayout、FrameLayout三种常用布局的特性,他在布局的时候是怎么计算的。效率如何。CoordinatorLayout配合AppbarLayout的使用,以及自定义Behavior。ConstraintLayout的使用。用来减少层级。
- Handler消息机制,推荐看一下Looper的源码
- 进程间通信,Binder机制
- AsyncTask源码看一下。
- 图片的压缩处理,三级缓存,Lru算法
- 分辨率和屏幕密度,以及计算一个图片大小。mdpi,hdpi的关系和比例。
- 优化,内存优化,布局优化,启动优化,性能优化。内存泄露,内存溢出。怎么优化,用了什么工具,具体怎么做的。
- listView和RecycleView对比,以及缓存策略。
- JNI(很少问)
- MVC,MVP,MVVM
- 开源框架Okhttp,Glide,EventBus,Rxjava等,以及JetPack下的开源库,要会用,还说说出一些东西,推荐 Retrofit,Okhttp,Glide,EventBus这些看一下源码。
- RecyclerView四大块,能实现什么效果,大致怎么实现的,心里要有数
- DecorView,Window,WindowManager,PhoneWindow关系,以及个子的职责。
加分项:Kotlin,Gradle,Flutter,组件化,插件化,热修复,framework。
上面的列的相关内容,看似很短一句话,但是每一项都需要你深入的去研究,要了解原理。为了更好地帮助大家进行学习,在这里给大家分享一份BAT大佬整理总结出来的《2022中高级Android面试题汇总》,里面包含了所有Android面试的知识点,可以全面的进行知识补给。这份资料包含了Java和Android两大部分,由于篇幅原因,这里只展示部分知识点,有需要的朋友有点击这里免费领取。
第一章 Java基础
- 静态内部类和非静态内部类的比较
- 多态的理解与应用
- java方法的多态性理解
- java中接口和继承的区别
- 线程池的好处,详解,单例(绝对好记)
- 线程池的优点及其原理
- 线程池的优点(重点)
- 为什么不推荐通过Executors直接创建线程池
- 不怕难之BlockingQueue及其实现
- 深入理解ReentrantLock与Condition
- Java多线程:线程间通信之Lock
- Synchronized 关键字原理
- ReentrantLock原理
- HashMap中的Hash冲突解决和扩容机制
- JVM常见面试题
- JVM内存结构

第二章 Android基础
- Activity知识点(必问)
- Fragment知识点
- Service知识点
- Intent知识点

第三章 UI控件篇
- 屏幕适配
- 主要控件优化
- 事件分发与嵌套滚动

第四章 网络通信篇
- 网络协议 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wiWUtOQS-1658751658504)

第五章 架构设计篇
- MVP架构设计
- 组件化架构
第六章 性能优化篇
- 启动优化
- 内存优化
- 绘制优化
- 安装包优化

第七章 源码流程篇
- 开源库源码分析
- Glide源码分析
- Android面试题:Glide
- day 20 面试题:Glide面试题
- 聊一聊关于Glide在面试中的那些事
- 面试官:简历上如果写Glide,请注意以下几点…
- Glide OOM问题解决方法汇总
- OkHttp源码分析
- Okhttp连接池复用机制
- Okhttp 流程和优化的实现
- 一篇让你受用的okhttp分析
- OkHttp面试之–OkHttp的整个异步请求流
- OkHttp面试之–HttpEngine中的sendRequest方法详解
- OkHttp解析大总结
- Okhttp任务队列工作原理
- Android高频面试专题 - 架构篇(二)okhttp面试必知必会
- Android 网络优化,使用 HTTPDNS优化 DNS,从原理到 OkHttp 集成
- Retrofit源码分析
- RxJava源码分析
- RxJava原理与源码分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WJ9zgpAT-1658751658504)
第八章 新技术篇
- 实战问题篇
第九章 面试篇
- 开源文档
- 面试题合集

篇幅有限,有需要这份《2022最新大厂Android面试资料汇总+电子书+视频+源码》欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取【保证100%免费】↓↓↓
最后,虽然今年很多互联网大厂都在进行一定的裁员,但是还是不要太慌张,规划好自己的学习计划,不断学习提升自己的技术,相信自己可以的,不要看不起自己就行。到最后希望各位都能找到自己心满意足的工作。
边栏推荐
猜你喜欢
随机推荐
Immutable
剑指 Offer 68 - II. 二叉树的最近公共祖先
typescript24-类型推论
lambda
25. 这三道常见的面试题,你有被问过吗?
MySQL实践总结-
动态规划 01背包
typescript22-接口继承
(2022牛客多校四)A-Task Computing (排序+动态规划)
Pyspark机器学习:向量及其常用操作
This article takes you to understand the past and present of Mimir, Grafana's latest open source project
Excel record of integer programming optimization model to solve the problem
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
(2022 Niu Ke Duo School IV) N-Particle Arts (Thinking)
解决ffmpeg使用screen-capture-recorder录屏,有屏幕缩放的情况下录不全的问题
typescript19-对象可选参数
lambda
(Codeforce 757)E. Bash Plays with Functions(积性函数)
PAT乙级 1001 害死人不偿命的(3n+1)猜想
MySQL-数据定义语言-DDLdatebase define language








