当前位置: 首页 > news >正文

Android:怎么学习才能更好的进大厂呢?

怎么学习才能更好的进大厂呢?

很多朋友都在问这个问题。

其实没有什么特别的技巧,就是依靠自己的毅力和决心。一天做不到,就一个月;一个月做不到,就一年。只要有决心,无论学历或资历如何,都不是阻碍。

当然,除了毅力和决心之外,学习方法的效率也是至关重要的。

在互联网时代,网络上提供了海量的免费学习资源。只要你有心,总能找到你需要的学习资料。然而,很多时候,效率是重要的考量因素。虽然网络上有很多免费的信息,但这些信息可能会花费你的大量时间,也可能让你在探索中走很多弯路,更重要的是,它们往往缺乏系统性和深度。

在这里插入图片描述

Android面试核心知识点精讲

对于一位Android开发者来说,扎实的基础知识是至关重要的。基础知识决定了你能在职业生涯中走多远,能达到什么样的高度,甚至决定了你能获得多少成就感。尤其对于那些注重技术实力的大公司来说,基础知识是一切的根本。在面试过程中,许多面试官都会深入地考察候选人的基础知识掌握程度。因此,提前进行充分的复习和巩固是非常必要的。

为了帮助大家更好地复习和巩固Android开发的基础知识,这里整理了一些核心知识点,供大家参考和阅读。通过这些知识点,你可以系统地回顾和巩固自己的基础知识,以便更好地应对面试和实际开发中的挑战。

(末尾有答案解析)

1.Activity
  • Activity的启动流程
  • onSaveInstanceState(),onRestoreInstanceState的掉用时机
  • activity的启动模式和使用场景
  • Activity A跳转Activity B,再按返回键,生命周期执行的顺序
  • 横竖屏切换,按home键,按返回键,锁屏与解锁屏幕,跳转透明Activity界面,启动一个 Theme 为 Dialog 的 Activity,弹出Dialog时Activity的生命周期
  • onStart 和 onResume、onPause 和 onStop 的区别
  • Activity之间传递数据的方式Intent是否有大小限制,如果传递的数据量偏大,有哪些方案
  • Activity的onNewIntent()方法什么时候会执行
  • 显示启动和隐式启动
  • scheme使用场景,协议格式,如何使用
  • ANR 的四种场景
  • onCreate和onRestoreInstance方法中恢复数据时的区别
  • activty间传递数据的方式
  • 跨App启动Activity的方式,注意事项
  • Activity任务栈是什么
  • 有哪些Activity常用的标记位Flags
  • Activity的数据是怎么保存的,进程被Kill后,保存的数据怎么恢复的
2.Service
  • service 的生命周期,两种启动方式的区别
  • Service启动流程
  • Service与Activity怎么实现通信
  • IntentService是什么,IntentService原理,应用场景及其与Service的区别
  • Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
  • bindService和startService混合使用的生命周期以及怎么关闭
3.BroadcastReceiver
  • 广播的分类和使用场景
  • 广播的两种注册方式的区别
  • 广播发送和接收的原理
  • 本地广播和全局广播的区别
4.ContentProvider
  • 什么是ContentProvider及其使用
  • ContentProvider,ContentResolver,ContentObserver之间的关系
  • ContentProvider的实现原理
  • ContentProvider的优点
  • Uri 是什么
5.Handler
  • Handler的实现原理
  • 子线程中能不能直接new一个Handler,为什么主线程可以 主线程的Looper第一次调用loop方法,什么时候,哪个类
  • Handler导致的内存泄露原因及其解决方案
  • 一个线程可以有几个Handler,几个Looper,几个MessageQueue对象
  • Message对象创建的方式有哪些 & 区别? Message.obtain()怎么维护消息池的
  • Handler 有哪些发送消息的方法
  • Handler的post与sendMessage的区别和应用场景
  • handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息
  • MessageQueue是什么数据结构
  • Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue,ThreadLocal在Handler机制中的作用
  • HandlerThread是什么 & 好处 &原理 & 使用场景
  • IdleHandler及其使用场景
  • 消息屏障,同步屏障机制
  • 子线程能不能更新UI
  • 为什么Android系统不建议子线程访问UI
  • Android中为什么主线程不会因为Looper.loop()里的死循环卡死 MessageQueue#next 在没有消息的时候会阻塞,如何恢复?
  • Handler消息机制中,一个looper是如何区分多个Handler的 当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理,处理message的时候怎么知道是去哪个callback处理的
  • Looper.quit/quitSafely的区别
  • 通过Handler如何实现线程的切换
  • Handler 如何与 Looper 关联的
  • Looper 如何与 Thread 关联的
  • Looper.loop()源码
  • MessageQueue的enqueueMessage()方法如何进行线程同步的
  • MessageQueue的next()方法内部原理
  • 子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程
  • ANR和Handler的联系
6.View绘制
  • View绘制流程
  • MeasureSpec是什么
  • 子View创建MeasureSpec创建规则是什么
  • 自定义Viewwrap_content不起作用的原因
  • 在Activity中获取某个View的宽高有几种方法
  • 为什么onCreate获取不到View的宽高
  • View#post与Handler#post的区别
  • Android绘制和屏幕刷新机制原理
  • Choreography原理
  • 什么是双缓冲
  • 为什么使用SurfaceView
  • 什么是SurfaceView
  • View和SurfaceView的区别
  • SurfaceView为什么可以直接子线程绘制
  • SurfaceView、TextureView、SurfaceTexture、GLSurfaceView
  • getWidth()方法和getMeasureWidth()区别
  • invalidate() 和 postInvalidate() 的区别
  • Requestlayout,onlayout,onDraw,DrawChild区别与联系
  • LinearLayout、FrameLayout 和 RelativeLayout 哪个效率高
  • LinearLayout的绘制流程
  • 自定义 View 的流程和注意事项
  • 自定义View如何考虑机型适配
  • 自定义控件优化方案
  • invalidate怎么局部刷新
  • View加载流程(setContentView)
7.View事件分发
  • View事件分发机制
  • view的onTouchEvent,OnClickListerner和OnTouchListener的onTouch方法 三者优先级
  • onTouch 和onTouchEvent 的区别
  • ACTION_CANCEL什么时候触发
  • 事件是先到DecorView还是先到Window
  • 点击事件被拦截,但是想传到下面的View,如何操作
  • 如何解决View的事件冲突
  • 在 ViewGroup 中的 onTouchEvent 中消费 ACTION_DOWN 事件,ACTION_UP事件是怎么传递
  • Activity ViewGroup和View都不消费ACTION_DOWN,那么ACTION_UP事件是怎么传递的
  • 同时对父 View 和子 View 设置点击方法,优先响应哪个
  • requestDisallowInterceptTouchEvent的调用时机
8.RecycleView
  • RecyclerView的多级缓存机制,每一级缓存具体作用是什么,分别在什么场景下会用到哪些缓存
  • RecyclerView的滑动回收复用机制
  • RecyclerView的刷新回收复用机制
  • RecyclerView 为什么要预布局
  • ListView 与 RecyclerView区别
  • RecyclerView性能优化
9.Viewpager&Fragment
  • Fragment的生命周期 & 结合Activity的生命周期
  • Activity和Fragment的通信方式, Fragment之间如何进行通信
  • 为什么使用Fragment.setArguments(Bundle)传递参数
  • FragmentPageAdapter和FragmentStatePageAdapter区别及使用场景
  • Fragment懒加载
  • ViewPager2与ViewPager区别
  • Fragment嵌套问题
10.WebView
  • 如何提高WebView加载速度
  • WebView与 js的交互
  • WebView的漏洞
  • JsBridge原理
11.动画
  • 动画的类型
  • 补间动画和属性动画的区别
  • ObjectAnimator,ValueAnimator及其区别
  • TimeInterpolator插值器,自定义插值器
  • TypeEvaluator估值器
12.Bitmap
  • Bitmap 内存占用的计算
  • getByteCount() & getAllocationByteCount()的区别
  • Bitmap的压缩方式
  • LruCache & DiskLruCache原理
  • 如何设计一个图片加载库
  • 有一张非常大的图片,如何去加载这张大图片
  • 如果把drawable-xxhdpi下的图片移动到drawable-xhdpi下,图片内存是如何变的。
  • 如果在hdpi、xxhdpi下放置了图片,加载的优先级。如果是400800,10801920,加载的优先级。
13.mvc&mvp&mvvm
  • MVC及其优缺点
  • MVP及其优缺点
  • MVVM及其优缺点
  • MVP如何管理Presenter的生命周期,何时取消网络请求
14.Binder
  • Android中进程和线程的关系,区别
  • 为何需要进行IPC,多进程通信可能会出现什么问题
  • Android中IPC方式有几种、各种方式优缺点
  • 为何新增Binder来作为主要的IPC方式
  • 什么是Binder
  • Binder的原理
  • Binder Driver 如何在内核空间中做到一次拷贝的?
  • 使用Binder进行数据传输的具体过程
  • Binder框架中ServiceManager的作用
  • 什么是AIDL
  • AIDL使用的步骤
  • AIDL支持哪些数据类型
  • AIDL的关键类,方法和工作流程
  • 如何优化多模块都使用AIDL的情况
  • 使用 Binder 传输数据的最大限制是多少,被占满后会导致什么问题
  • Binder 驱动加载过程中有哪些重要的步骤
  • 系统服务与bindService启动的服务的区别
  • Activity的bindService流程
  • 不通过AIDL,手动编码来实现Binder的通信
15.内存泄漏&内存溢出
  • 什么是OOM & 什么是内存泄漏以及原因
  • Thread是如何造成内存泄露的,如何解决?
  • Handler导致的内存泄露的原因以及如何解决
  • 如何加载Bitmap防止内存溢出
  • MVP中如何处理Presenter层以防止内存泄漏的
16.性能优化
  • 内存优化
  • 启动优化
  • 布局加载和绘制优化
  • 卡顿优化
  • 网络优化
17.Window&WindowManager
  • 什么是Window
  • 什么是WindowManager
  • 什么是ViewRootImpl
  • 什么是DecorView
  • Activity,View,Window三者之间的关系
  • DecorView什么时候被WindowManager添加到Window中
18.WMS
  • 什么是WMS
  • WMS是如何管理Window的
  • IWindowSession是什么,WindowSession的创建过程是怎样的
  • WindowToken是什么
  • WindowState是什么
  • Android窗口大概分为几种?分组原理是什么
  • Dialog的Context只能是Activity的Context,不能是Application的Context
  • App应用程序如何与SurfaceFlinger通信的 View 的绘制是如何把数据传递给 SurfaceFlinger 的
  • 共享内存的具体实现是什么
  • relayout是如何向SurfaceFlinger申请Surface
  • 什么是Surface
19.AMS
  • ActivityManagerService是什么?什么时候初始化的?有什么作用?
  • ActivityThread是什么?ApplicationThread是什么?他们的区别
  • Instrumentation是什么?和ActivityThread是什么关系?
  • ActivityManagerService和zygote进程通信是如何实现的
  • ActivityRecord、TaskRecord、ActivityStack,ActivityStackSupervisor,ProcessRecord
  • ActivityManager、ActivityManagerService、ActivityManagerNative、ActivityManagerProxy的关系
  • 手写实现简化版AMS
20.系统启动
  • android系统启动流程
  • SystemServer,ServiceManager,SystemServiceManager的关系
  • 孵化应用进程这种事为什么不交给SystemServer来做,而专门设计一个Zygote
  • Zygote的IPC通信机制为什么使用socket而不采用binder

相关文章:

Android:怎么学习才能更好的进大厂呢?

怎么学习才能更好的进大厂呢? 很多朋友都在问这个问题。 其实没有什么特别的技巧,就是依靠自己的毅力和决心。一天做不到,就一个月;一个月做不到,就一年。只要有决心,无论学历或资历如何,都不是…...

CSS标点符号换行问题

最近遇到一个奇怪的现象,元素中中文文本正常显示,但是加了一堆符号后中文文本居然换行了. div{width: 200px;border: 1px solid blue;word-break: break-all;} <div>文本</div>经过研究发现&#xff0c;因为标点符号不允许出现在行首和行尾&#xff0c;连带着符号…...

jdbc Preparestatement防止SQL注入的原理

2023-10-28T03:37:11.264132Z 2 Execute select * from users where username liulemon and password \ or \1\ 1\ 可以看到这一行&#xff0c;预编译时&#xff1f;变成了转义字符 useServerPrepStmtstrue加上这句才能预编译...

如何控制 LLM 的输出格式和解析其输出结果?

现在很多人对于如何使用像 ChatGPT 这样的 LLM 已经比较有经验了&#xff0c;可以使用各种不同的 Prompt 得到自己想要的结果。但有时候我们的使用场景不局限于手动操作&#xff0c;而是需要结合程序去调用 API&#xff0c;并且解析 API 的返回结果&#xff0c;从而实现一些自动…...

【Linux】 ps 命令使用

ps &#xff08;英文全拼&#xff1a;process status&#xff09;命令用于显示当前进程的状态&#xff0c;类似于 windows 的任务管理器。 语法 ps [选项] ps命令 -Linux手册页 著者 ps最初由布兰科兰克斯特撰写<lankestefwi.uva.nl>。迈克尔K约翰逊<johnsonmred…...

C++二分查找算法的应用:长度递增组的最大数目

本文涉及的基础知识点 二分查找 题目 给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组&#xff0c;并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外&#xff0c;还必须满足以下条件&…...

提示3D标题编辑器仍在运行怎么解决,以及3D标题编辑器怎么使用

在进行视频剪辑时&#xff0c;尤其是剪辑一些带有文字的开场视频&#xff0c;一般都会使用具有立体效果的3D标题&#xff0c;这样制作出来的视频效果不仅好看&#xff0c;还非常的炫酷&#xff0c;但是对于一些刚刚开始接触视频剪辑的小伙伴来说&#xff0c;可能对3D标题还不是…...

1. PPT高效初始化设置

1. PPT高效初始化设置 软件安装&#xff1a;Office 2019 主题和颜色 颜色可以在白天与黑夜切换&#xff0c;护眼 切换成了黑色 撤回次数 撤回次数太少&#xff0c;只有20次怎么办 自动保存 有时忘记保存就突然关闭&#xff0c;很需要一个自动保存功能 图片压缩 图…...

el-cascader级联选择器选中一个全选中问题

问题 只选中一个却把同级全选中 解决 :props中添加label、value、children属性 label、value、children属性值需要和后端返回的集合中的字段名保持一致 后端返回数据&#xff1a;...

Opencascad(C++)-创建自定义坐标系

文章目录 1、前言2、在Opencascad中显示小的坐标系3、在Opencascad中创建自定义的坐标系 1、前言 在Opencascad开发时&#xff0c;在view中可以显示小的坐标系&#xff0c;但是有时我们需要在建模时创建基准坐标系&#xff0c;当然可以作为工件坐标系也可以作为基准坐标系。本…...

MySQL数据库入门到大牛_01_数据库概述

文章目录 1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库管理系统排名(DBMS)2.4 常见的数据库介绍 3. MySQL介绍3.1 概述3.2 MySQL发展史重大事件3.3 关于MySQL 8.03.4 Why choose MySQL?3.5 Oracle v…...

Web - Servlet详解

目录 前言 一 . Servlet简介 1.1 动态资源和静态资源 1.2 Servlet简介 二 . Servlet开发流程 2.1 目标 2.2 开发过程 三 . Servlet注解方式配置 ​编辑 四 . servlet生命周期 4.1 生命周期简介 4.2 生命周期测试 4.3 生命周期总结 五 . servlet继承结构 5.1 ser…...

postgresql 触发器如何生成递增序列号,从1开始,并且每天重置

大家好&#xff0c;我是三叔&#xff0c;许久不见&#xff0c;这期给大家介绍一下笔者在开发中遇到的业务处理&#xff1a;pgsql 创建触发器生成每日递增序列&#xff0c;并且第二天重置&#xff0c;根据不同的用户进行不同的控制。 1.创建生成递增序列的 table 表 -- 创建us…...

“第五十九天”

这是昨天那道题&#xff0c;这个后面自己的处理思路还是差了点&#xff0c;这道题关键感觉就是对进位的处理的&#xff0c;由于进位的存在&#xff0c;所以处理数据的时候只能从最低位开始&#xff0c;我一开始是从高位处理的&#xff0c;而且后面越来越迷&#xff0c;这个点一…...

IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】

Docker官网 Docker官网&#xff1a;https://www.docker.com/ Docker Hub官网&#xff1a;http://hub.docker.com/ 什么是Docker Docker 是一个开源的容器引擎&#xff0c;可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者和系统管理员在笔记本上编…...

【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/03

文章目录 TCP/UDP对比端口号作用字节序字节序转换api套接字 socket实现网络通讯服务端 逻辑思路demo&#xff1a; 满血版双方通讯/残血版多方通讯服务端 demo客户端 demo FTP 项目实现sever demo:client demo: 局域网多方通讯 配合线程实现sever demo:client demo: TCP/UDP对比…...

Leetcode刷题详解——全排列

1. 题目链接&#xff1a;46. 全排列 2. 题目描述&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],…...

JSONP 跨域访问(1), 简介, 原理, 实验, 缺点

JSONP 跨域访问(1), 简介, 原理, 实验, 缺点 一, JSONP 简介 JSONP&#xff08;JSON with Padding&#xff09;是一种非官方跨域数据交互协议。它允许web页面从不同的域名下加载数据。 由于同源策略&#xff0c;web页面通过XMLHttpRequest调用通常只允许访问与其自身相同域名…...

velero备份k8s集群

流程图 velero备份原理 本地 Velero 客户端发送备份指令。Kubernetes 集群内就会创建一个 Backup 对象。BackupController 监测 Backup 对象并开始备份过程。BackupController 会向 API Server 查询相关数据。BackupController 将查询到的数据备份到远端的对象存储。 velero的…...

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。

文章目录 2章4 章5章&#xff08;没看&#xff09;6章&#xff08;没看&#xff09; 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络&#xff0c;预先简历链路 卫星和地面终端有…...

Spring Boot实践 --windows环境下 K8s 部署 Docker

第一步&#xff1a;搭建项目并制作合适的jar包 这里我们准备好前面项目 用户管理系统 项目里的jar包。测试功能&#xff0c;定时任务会每过10s打印一次日志&#xff1a; E:\test>java -jar demospringboot-0.0.1-SNAPSHOT.jar2023-11-01 20:24:21.059 INFO 11848 --- [ …...

Linux 将Qt程序打包为AppImage包

前言 在 Linux 环境下&#xff0c;开发完 Qt 程序后&#xff0c;也需要制作为一个安装包或者可执行文件进行分发。这里介绍使用 linuxdeployqt 将 Qt 程序打包为 .AppImage 应用程序&#xff08;类似于 Windows 的绿色免安装软件&#xff09; 环境配置 配置 Qt 环境变量 这…...

修复国产电脑麒麟系统开机出现initramfs 问题

目录预览 一、问题描述二、原因分析三、解决方案四、知识点呀initramfsBusyBox 五、参考链接 一、问题描述 国产麒麟系统出现 initramfs 模式 二、原因分析 一般在拷贝卡顿过程【强制关机】或者电【脑异常断电】的情况下概率性导致系统分区损坏&#xff0c;重启后大概率就会进…...

机器人控制算法—如何使用C++读取pgm格式的栅格地图并转化为ROS地图格式的data?

1.Introduction 近期正在做全局规划局部动态规划的项目&#xff0c;目前遇到的问题是&#xff0c;我们如何利用C处理pgm地图文件。即将地图信息要与像素点结合起来。所以我们需要知道地图读取和处理的底层原理&#xff0c;这样更好地在非ROS平台下移植。 2.Main 如下几条信息…...

牛客项目(五)-使用kafka实现发送系统通知

kafka入门以及与spring整合 Message.java import java.util.Date;public class Message {private int id;private int fromId;private int toId;private String conversationId;private String content;private int status;private Date createTime;public int getId() {retur…...

计算机网络——第一章时延部分深入学习、相关习题及详细解析

目录 时延相关 习题1 习题1-改 习题2 时延相关 之前我们学习过&#xff0c;时延由发送时延、传播时延和处理时延三部分构成。 发送时延的计算公式为“分组长度除以发送速率”&#xff0c; 发送速率应该从网卡速率、信道带宽、以及对端的接口速率中取最小。 传播时延的计…...

CSS3媒体查询与页面自适应

2017年9月&#xff0c;W3C发布媒体查询(Media Query Level 4)候选推荐标准规范&#xff0c;它扩展了已经发布的媒体查询的功能。该规范用于CSS的media规则&#xff0c;可以为文档设定特定条件的样式&#xff0c;也可以用于HTML、JavaScript等语言。 1、媒体查询基础 媒体查询…...

UG\NX二次开发 超长的对象属性值,怎么设置

文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 Dr. Lin 订阅本专栏,非常感谢。 简介 使用UF_ATTR_assign设置对象属性,如果属性值超过UF_ATTR_MAX_STRING_LEN则会报错。 #define UF_ATTR_MAX_STRING_LEN 132 怎么办呢?下面这种方法可以解决: 效果 …...

流媒体服务实现H5实时预览视频

目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急&#xff0c;最高可扩容16T。排查如下&#xff1a;主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制&#xff0c;这样上传一份视频后最大会有四份拷贝&#xff08;预览、普通发布、互动…...

C++适配器

文章目录 引言栈和队列 priority_queue仿函数迭代器区间 引言 栈的特性是先进后出&#xff0c;队列的特性是先进先出&#xff0c;然而双向队列同时具有栈和队列的特性&#xff0c;所以我们可以通过双向队列来适配出栈和队列。 先看库里面 栈和队列 stack和queue模板参数里面都…...