【Android面试】窗口机制专题

谈谈Android-Binder机制及AIDL使用,面试总结 (一)简介 Handler机制是一套Android消息传递机制。在Android开发多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理。 在Android开发中,为了UI操作是线程安全的,规定了只允许主线程更新Activity里的UI组件。但在实际开发中,存在多个线程并发操作UI组件的情况,导致UI操作线程不安全。故采用Handler消息传递机制,是工作线程需更新UI时,通过Handler通知主线程,从而在主线程中更新UI操作 阅读详情

文章目录

一、基础概念与体系架构

1. 简述 Window、WindowManager、WMS 三者关系与职责

答案:
Window:抽象类,代表一个窗口,是 View 的容器。具体实现是 PhoneWindow。
WindowManager:应用层接口,继承自 ViewManager,负责 添加、更新、删除窗口,是 App 与 WMS 交互的入口。不属于 Activity,属于整个 App 应用进程
WMS(WindowManagerService):系统服务,运行在 system_server,负责所有窗口的管理、层级、尺寸、焦点、动画、显示排序。
关系:App 通过 WindowManager 跨进程通信(Binder)请求 WMS,WMS 真正决策窗口怎么显示
在这里插入图片描述

2. Android 中有哪些 Window 类型?应用与系统窗口区别 *

答案:窗口类型分三大类:
应用窗口:TYPE_BASE_APPLICATION、TYPE_APPLICATION(Activity 默认)
子窗口:TYPE_APPLICATION_PANEL(Dialog、PopupWindow),必须依附于主窗口
系统窗口:TYPE_STATUS_BAR、TYPE_TOAST、TYPE_SYSTEM_ALERT 等,输入法/悬浮窗/Toast/状态栏
区别:
应用窗口:需要 Activity/Token 才能创建,受生命周期管理。
系统窗口:需要额外权限,不受单个 Activity 生命周期控制。

3. addView/updateViewLayout/removeView 流程

App 层 WindowManager → WMS → Surface → SurfaceFlinger → 屏幕渲染

  • addView
    创建 ViewRootImpl
    建立与 WMS 的连接
    向 WMS 注册窗口,申请 Surface
    开始首次 measure/layout/draw
  • updateViewLayout
    更新 LayoutParams
    请求 WMS 重新布局窗口
    触发 requestLayout
  • removeView
    销毁 Surface
    向 WMS 注销窗口
    解除 ViewRoot 与 View 的关联
    处理窗口泄漏检查

4. 为什么 DecorView 是 Window 根 View?与 Window 如何绑定

答案:
DecorView 是 Activity/Window 界面的 最顶层 View,包含标题栏 + 内容布局。
它是 Window 唯一直接持有的 View。
绑定:
Activity 启动时,PhoneWindow 会创建 DecorView,并通过 setContentView 将布局添加到 DecorView 的 content 容器中。

5. PhoneWindow 作用

答案:
Window 的唯一系统实现类。
内部管理 DecorView、标题栏、背景、事件分发、输入法等。
是 Activity 和 WindowManager 之间的桥梁。

二、WindowManager 与 View 关联核心

1. 同一个 WM 可添加多个 View?不同 WM 实例区别

答案:
同一个 WindowManager 可以添加多个 View,每个 View 对应一个窗口。
每个 WindowManager 实例绑定一个 Context(Activity/Application)。
Activity 的 WM 会携带 Activity Token,Application 没有,所以不能直接弹 Dialog。

2. addView 中 LayoutInflater 与 WM 流程

答案:
LayoutInflater 把 xml 解析成 View 树
调用 WindowManager.addView(view, params)
内部创建 ViewRootImpl
ViewRootImpl 负责与 WMS 通信、创建 Surface、触发绘制

3. ViewRootImpl 核心作用 & 与 WMS 通信方式

答案:核心作用:
每个窗口对应一个 ViewRootImpl
管理 measure、layout、draw
管理 输入事件分发
管理 Surface 与渲染
管理 与 WMS 的通信
ViewRootImpl 是在 DecorView 被添加到 WindowManager 时创建的;实际创建时机在 Activity 的 onResume() 之后
通信:通过 Binder 接口 IWindowSession 与 WMS 通信。

4. 子线程不能更新 UI 原因 & 与 ViewRootImpl 关系

答案:
ViewRootImpl 里有 mThread 检查,记录创建时的线程(主线程)。
requestLayout/invalidate 最终会走到 checkThread()。
子线程更新会抛出 CalledFromWrongThreadException。
本质: UI 操作非线程安全,系统用单线程检查强制约束。

5. LayoutParams 哪些参数影响窗口展示

答案:
type:窗口类型(决定层级、权限)
width/height:宽高
gravity:对齐方式
flags:FLAG_NOT_FOCUSABLE、FLAG_NOT_TOUCHABLE 等
format:像素格式
dimAmount:背景灰度
token:窗口令牌(权限校验)

三、WMS 核心原理(大厂深度必问)

1. WMS 如何管理窗口?Z-Order 如何计算

WMS 运行在 SystemServer,通过层级树 + WindowState + WindowToken管理所有窗口生命周期与布局;Z‑Order = mBaseLayer + mSubLayer,由窗口类型决定 base、子窗口在父窗口 base 上叠加 sub,layer 越大越靠前。

2. App 与 WMS 通信方式 & Binder 作用

App 与 WMS 全程通过 Binder IPC 通信:App 端 WindowManager → IWindowManager/IWindowSession 代理 → WMS;WMS 通过 IWindow 回调 App;Binder 作用是跨进程通道、远程调用、数据传输、权限校验、事件回调、全局窗口管控。

3. WindowToken 作用?为什么 Activity/Dialog 要不同 Token

答案:
WindowToken 是窗口的身份令牌,用于权限校验。
防止恶意应用随意弹系统级窗口。
Activity 窗口使用 AppToken/ActivityRecord Token。
Dialog 作为子窗口,必须使用 宿主 Activity 的 Token。

4. AppToken 与 WindowToken 区别

- 先有 ActivityToken,后有 WindowToken
AMS 创建 Activity → 分配 ActivityToken → 告知 WMS → WMS 依据它创建对应 WindowToken。
- 绑定关系
WindowToken 内部持有 ActivityToken 引用,实现组件层 ↔ 窗口层双向绑定。
- 职责划分
ActivityToken:管页面、生命周期、任务栈(AMS 层面)
WindowToken:管窗口、层级、显示、事件(WMS 层面)

  • 为什么必须分开设计
    职责解耦:AMS 只管组件生命周期,WMS 只管窗口绘制显示,互不侵入。
    多窗口常见适配:一个 Activity 可以开多个窗口,一个 ActivityToken 对应多个 WindowState,共用一个 WindowToken。
    系统窗口区分:状态栏、Toast、输入法无 Activity,直接使用独立 WindowToken,不需要 ActivityToken。

5. WMS 感知窗口生命周期?Activity 与窗口生命周期对应关系

Activity 的生命周期由 AMS(ActivityManagerService) 管理,窗口生命周期由 WMS 管理,二者通过 WindowManager 桥接,同步触发但分属不同模块
在这里插入图片描述

6. 如何判断窗口可获取焦点?焦点切换逻辑

  • 焦点条件:LayoutParams.FLAG_NOT_FOCUSABLE 为true,窗口可见,不被完全遮挡,属于当前前台应用
  • 切换:触摸 / 按键 → WMS 计算顶层可焦点窗口 → 通知对应窗口获取焦点。
  • 同一时间只有一个窗口拥有焦点
  • 焦点永远给最顶层的符合条件的窗口
  • 子窗口优先于父窗口

四、Activity/Dialog/Toast 窗口原理

1. Activity 窗口在哪个生命周期创建 & 添加

Activity 窗口在 onCreate 中完成创建并提交添加请求,onResume 阶段由 WMS 完成显示与焦点分配。
但 addView 真正被系统调用的位置是:ActivityThread 的 handleResumeActivity 方法中,在 onResume 执行完成之后。

2. Dialog 与 Activity 窗口区别?非 Activity 上下文报错原因

Dialog 是 子窗口,必须依附 Activity 窗口。
Activity 窗口有 AppToken,Dialog 使用宿主 Token。
用 Application 等无 Token 的 Context:
系统校验 Token 失败 → 抛出 WindowManager.BadTokenException。

3. Toast 窗口类型 & 限制 & 崩溃原因

  • 类型:TYPE_TOAST(系统窗口)
  • 限制:
    自动超时消失
    高版本无法自定义 Toast
    后台弹出受限
  • 常见崩溃:
    Toast 持有 Activity 引用导致销毁时窗口泄漏
    7.1 以下 Toast 内部 TN 类 Binder 泄漏导致崩溃

4. 悬浮窗权限校验逻辑

  • 系统窗口类型需要 SYSTEM_ALERT_WINDOW 权限
  • 6.0 前:声明即用,无需授权
  • 6.0 后:不能动态申请,只能跳设置让用户手动开
  • WMS 会检查:类型 + 权限 + Token

5. Dialog 依赖 Activity Window?脱离 Activity 展示要解决什么

Dialog 是子窗口,必须绑定 Activity Token。

  • 脱离 Activity 需要:
    使用 系统窗口类型
    申请悬浮窗权限
    自己管理生命周期,防止窗口泄漏

五、Surface 与窗口渲染

1. Window 与 Surface 关系 & 窗口渲染流程

Surface 是一块 画布(缓冲区),Window 对应一个 Surface。
渲染流程:

  • Activity 创建 PhoneWindow、DecorView,构建 View 视图树
  • 绑定 Activity WindowToken,向 WMS 注册窗口属性
  • handleResumeActivity 执行 addView,正式请求添加窗口
  • WMS 向 SurfaceFlinger 申请分配 Surface 绘图缓冲区
  • 应用侧通过 Choreographer 监听 VSync 垂直同步信号
  • VSync 信号抵达 → Choreographer 统一调度渲染任务
  • 触发 View 三大流程:测量 → 布局 → 绘制 (由ViewRootImpl执行)
  • 绘制完成,提交 Surface 帧数据
  • SurfaceFlinger 对所有窗口 Surface 分层排序、图层混合合成
  • 交由 HWComposer 硬件合成,最终刷新屏幕完成显示

2. SurfaceFlinger 作用 & 与 WMS、App 协作

SurfaceFlinger:系统合成服务,负责 所有图层混合、合成、送显。
WMS 告诉 SF 窗口位置、大小、层级。
App 往 Surface 里写数据。
SF 按 Z 序合成所有窗口,输出到屏幕。

3. 硬件加速 & 开启后渲染变化

硬件加速:使用 GPU 绘制 View。
变化:
绘制性能大幅提升
绘制模型变成 显示列表(DisplayList)
部分 API 不兼容或行为改变

4. SurfaceView、TextureView 与普通 View 区别

普通 View:共享同一个 Surface,在主线程绘制。
SurfaceView:独立 Surface,可子线程绘制,效率高,但不支持动画、平移旋转。
TextureView:有独立缓冲,但挂载在应用窗口中,支持变换、动画。
在这里插入图片描述

5. invalidate/requestLayout 如何到 WMS & SF

  • requestLayout():触发 measure + layout 重新测量布局,不走 draw
  • invalidate():只触发 draw 重绘,不重新测量布局
view.requestLayout()
→ 上报 ViewRootImpl
→ 注册 Choreographer 监听 VSync
→ VSync 到来执行 measure + layout
→ 窗口尺寸/位置变更 → 跨进程通知 WMS 更新窗口属性
→ 可选触发draw写入Surface
→ 提交缓冲区 → SF合成渲染上屏
view.invalidate()
→ 标记脏区域 → 上报 ViewRootImpl
→ 等待VSync → 仅执行draw绘制
→ 内容写入Surface缓冲区
→ 直接提交帧数据给SF合成显示
→ 不通知WMS修改窗口布局信息

六、Token 机制与权限校验

1. 为什么用 WindowToken 校验窗口合法性

防止恶意应用在后台随意弹窗、仿冒界面、窃取隐私。
Token 由系统分发,App 不能伪造。
只有合法 Token 才能创建对应级别窗口。
不同应用、不同进程窗口拥有不同 WindowToken,WMS 依靠 Token 做进程隔离,禁止跨进程随意依附弹窗,保障系统界面安全。

2. 应用后台弹窗口被拦截核心逻辑

高版本 Android 限制后台应用弹出覆盖层窗口。
WMS 检查:
应用是否在前台
是否有特殊权限
窗口类型是否允许后台显示
无权限则拒绝 addView。

3. 不同版本对 Token、后台弹窗的改动

Android 6.0:悬浮窗动态权限
Android 8.0:Toast 改用 TYPE_TOAST,禁止自定义 Toast
Android 10/11:严格限制后台悬浮窗、后台弹出 Activity
整体趋势:越来越严,越安全

4. Application 上下文创建 Dialog 崩溃原因

Dialog 的底层原理:Dialog show() 内部最终会调用 WindowManager.addView(),向 WMS 添加窗口。WMS 添加窗口有个硬性要求:窗口必须携带合法的 WindowToken。

Application Context 没有 Activity Token。
Dialog 是子窗口,必须依附带 Token 的 Activity 窗口。
WMS 校验 Token 为空 → 直接抛异常。

5. 如何绕过 Token 实现后台弹窗?系统如何修复

  • 早期利用 系统漏洞 / 反射 伪造 Token。
  • 利用 TYPE_SYSTEM_ALERT 等系统窗口。
    系统修复:
    严格权限
    严格 Token 校验
    后台弹出限制
    高版本无法通用绕过

七、多窗口、分屏、折叠屏

1. 多窗口下 WMS 如何管理应用窗口

WMS 为每个窗口分配 固定区域。
每个应用视为独立窗口栈。
焦点、输入、尺寸单独管理。
生命周期与正常 Activity 略有区别(如不总是 onStop)。

2. 分屏下窗口尺寸、生命周期、焦点变化

尺寸:按分屏比例重新 layout
生命周期:不会正常走 onStop,保持 resumed
焦点:同一时间只有一个窗口获焦

3. 折叠屏切换时窗口重建与布局

折叠屏切换时,硬件传感器通知 DisplayManager → AMS 判定配置变更 → WMS 重新计算窗口大小并 relayout → 应用默认重建 Activity,或通过 configChanges 动态 resize → ViewRootImpl 在 VSync 驱动下重新 measure/layout/draw → SurfaceFlinger 合成新屏幕图层并上屏。
核心是配置变更触发窗口重建 / 重布局,VSync+Choreographer 保障渲染时序,同时需适配铰链与大屏布局。

4. 多窗口与 Activity 启动模式关系

多窗口下,standard 等模式会在 对应窗口栈 内创建。
分屏时,新 Activity 默认在同半屏打开。
特殊启动模式(如 singleInstance)会独占一个窗口。

八、异常场景与问题排查

1. WindowLeaked 场景 & 如何避免

  • 场景:
    Activity 销毁时,Dialog/Toast/ 悬浮窗未关闭
    窗口仍持有 Activity 引用
  • 避免:
    onDestroy 中 dismiss Dialog
    用 Application 生命周期管理全局弹窗
    及时 removeView

2. 后台切回黑屏 / 白屏与窗口机制关系

Activity 被销毁后重新创建
DecorView 未完成绘制前显示窗口背景
或 Surface 未准备好

  • 白屏:Activity主题 windowBackground 底色先显示,布局还未渲染
  • 黑屏:Surface 未就绪,无画布内容,系统默认黑色画布填充

3. 窗口动画卡顿、黑屏分析角度

  • 动画卡顿

在这里插入图片描述

  • 动画黑屏
    在这里插入图片描述
    **窗口动画卡顿:**从主线程阻塞、视图绘制过重、频繁窗口重布局 IPC 耗时、Surface 渲染缓冲不足、SF 合成压力、VSync 时序不同步六大角度分析。
    动画过程黑屏:核心是Surface 销毁重建时序不同步、窗口可见早于视图绘制、WindowToken 失效挂载异常、配置变更重建中断渲染、顶层窗口抢占遮挡导致画面断层缺失。

4. 软键盘弹出挤压布局原理

输入法是一个系统窗口。
键盘弹出 → WMS 调整应用窗口大小
windowSoftInputMode 控制:
压缩布局
平移布局
不调整

九、大厂开放性问题

1. 窗口从创建到显示全流程

Activity → PhoneWindow → DecorView → ViewRootImpl → WMS → SurfaceFlinger → 屏幕。

2. 全局悬浮窗实现要点

申请悬浮窗权限
使用系统窗口类型
处理触摸、拖动、焦点
注意生命周期,防止泄漏

3. 系统窗口与应用窗口通信

Binder、AIDL、ContentProvider、广播。

4. 优化 Activity 窗口启动速度

减少布局层级
异步加载
优化绘制
避免主线程耗时
复用窗口 / 预创建 DecorView

Android经典面试:真正带你搞懂RecyclerView的缓存机制,BAT大厂面试总结 Android开发的现状 目前,移动开发已经处于饱和的阶段,Android开发也不如当年盛况,已经不再像前几年前那么火爆。正如一种编程语言如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲线先急速上升,然后到达顶点,然后再下降,最后再趋近一个平稳的值。 可以看到,从2016年的下半年开始,移动互联网基本处于缓慢发展的阶段,很多大佬称之为互联网的下半场。如果移动互联网的前半场是粗放式的强地盘阶段,那么下半场就是守地盘的阶段,这一阶段,会出现众多的寡头。 在技术上,相比之前之前面试只问Android 阅读详情

相关推荐

CAPL实战:从零构建HEX文件解析器,赋能UDS刷写

本文详细介绍了如何使用CAPL从零构建HEX文件解析器,以支持UDS刷写操作。通过解析HEX文件格式、设计状态机、优化数据结构与算法,实现高效准确的固件数据处理,并提供了与UDS刷写流程对接的工程化实践建议。

weixin_28726391的博客 442

Android面试专题 | 大厂安卓开发高频面试真题174问(附详细答案)

每年求职季就是修罗场,无数人削尖了脑袋想进大厂,我身边当然不乏和我一样心怀大厂梦的人,但大家也都清楚进入大厂的难度有多高。 在入职谷歌之前我也曾经历无数坎坷,陷入过技术瓶颈和人生低谷,面试前艰苦的复习与面试期巨大的心理压力令我至今想起都一阵心悸。...

m0_59162559的博客 1111

《Ventoy 制作系统安装 U 盘的具体步骤》

然后您可以在电脑的磁盘管理中对 U 盘进行快速格式化,选择 FAT32 或 NTFS 文件系统。至此,Ventoy 系统安装 U 盘就制作完成了。您可以在需要安装系统的电脑上,从 U 盘启动,然后选择相应的系统镜像进行安装。安装完成后,将您需要的操作系统镜像文件(如 Windows、Linux 等的 ISO 格式镜像)复制到 U 盘的根目录。在安装程序中,选择您插入的 U 盘设备,确保选择正确,以免误操作。2. 确认选择的 U 盘盘符正确,防止误操作导致其他磁盘数据丢失。点击“安装”按钮,等待安装完成。

jiyiwangluokeji的博客 2665

【Android面试查漏补缺】之事件分发机制详解,Android高级工程师面试题-字节跳动

由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。09755460)][外链图片转存中…(img-ofoDE01q-1711809755460)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

2401_84007015的博客 1067

从零搭建UVM验证环境:新手入门实践指南

在数字芯片验证领域,SystemVerilog和UVM(Universal Verification Methodology)是构建高效验证环境的核心技术。其原理基于面向对象编程和事务级建模,通过组件化架构实现验证的复用性和自动化。这一方法学的技术价值在于显著提升验证效率与质量,广泛应用于处理器、通信芯片等复杂设计的验证场景。本文聚焦于UVM验证环境的搭建实践,通过一个加法器实例,详细解析了uvm_driver、uvm_monitor、uvm_sequence等关键组件的协同工作机制,并提供了基于Quest

weixin_30015371的博客 445

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1012

【Android面试】打包 & 启动专题

Android 打包&启动专题

studyForMokey的博客 508

树莓派作为Modbus服务器:pymodbus配置全记录

手把手教你用树莓派部署Modbus服务器,核心基于pymodbus实现数据通信与设备控制,涵盖配置步骤与常见问题,适合工业自动化场景应用。

weixin_42510201的博客 753

1个月学会Android开发,安卓基础面试题

本文讲解了我对Android开发现状的一些看法,也许有些人会觉得我的观点不对,但我认为没有绝对的对与错,一切交给时间去证明吧!愿与各位坚守的同胞们互相学习,共同进步!在这里我也分享一份自己收录整理的**Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料**帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

m0_60635609的博客 960

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2267

102、栅极驱动芯片选型与设计

文章摘要 本文分享了栅极驱动芯片选型与设计的实战经验。通过一次因驱动芯片选型不当导致的炸管事故,作者总结了栅极驱动芯片选型的五个关键参数:峰值驱动电流、驱动电压范围、传播延迟匹配、欠压锁定和隔离等级。文章详细分析了自举电路设计中的常见陷阱,以及栅极电阻对开关特性的影响,并强调了PCB布局布线的重要性。最后,作者提供了七条实用建议,包括避免通用型驱动芯片、关注CMTI参数、使用插件电阻等。核心观点是:栅极驱动设计需要综合考虑参数匹配、电路布局和实际调试,示波器实测波形是验证设计的唯一标准。

2401_88858637的博客 43

Android窗口机制:核心概念与面试高频问题解析

窗口机制是Android系统显示架构的基础,涉及应用界面的绘制、事件分发和性能优化。其核心在于WindowManager、WindowManagerService(WMS)和ViewRootImpl的协同工作,通过Binder跨进程通信实现窗口管理。在技术实现上,窗口添加流程包括初始化、视图附加、WMS注册、绘制准备、合成提交和事件通路建立六个阶段。这一机制不仅影响UI渲染效率,还直接关系到触摸事件分发、多窗口适配等关键功能。在面试中,窗口层级关系、对话框覆盖原理和内存泄漏排查等成为高频考点。通过理解窗口机

weixin_32576389的博客 223

大模型之Spring AI实战系列(二):Spring Boot + OpenAI 打造聊天应用全攻略

本篇文章是《Spring AI实战》专栏的第一篇开发入门文章,我们将借助一个完整的OpenAI聊天应用示例,详细介绍如何运用Spring Boot和Spring AI快速搭建一个支持OpenAI API的聊天服务,全面涵盖基础对话、流式对话、多提供商配置等核心功能。

寻道AI,探索AI无限可能! 6861

2024安卓岗位面试题总结

2024年安卓面试题总结,总结的相当详细

AdrianAndroid的专栏 3066

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

2024年安卓社招面试题精选,2024金三银四Android大厂面试题来袭

感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。

2401_85319166的博客 1389

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android吧!Android开发中常见的一些问题面试专题,高级面试题+解析_android 面试题 开发中遇到的

【Android 详细知识点思维脑图(技能树)】答应大伙的备战金三银四,大厂面试真题来啦!这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。《960全网最全Android开发笔记》《379页Android开发面试宝典》

2401_84006689的博客 882

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大厂Android高级多套面试专题整理集合,面试总结

导语 2020年是转折的一年,2021年算是收获的一年,趁着金三银四开始找工作。先分享一下offer的情况 阿里高德(offer) 爱奇艺(offer) 腾讯视频(offer) 小米(被拒) 今日头条(被拒) 在面试的过程中我深深的感受到,对于一个优秀的安卓开发来说,首先摆在第一位的还是他/她作为一个软件工程师的基本素养。无论你是做前端还是后端,最后定义你的优秀程度的还是作为软件工程师的基本素养,学习能力和编程能力,还有设计能力。 网络:分层模型、TCP、UDP、HTTP、HTTPS 分层模型 应用层

m0_57077995的博客 145

2024Android岗面试题知识点小结,,安卓面试基础技能罗列

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

H1767410的博客 793

android程序设计基础,安卓工程面试问题

感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。

2401_83329718的博客 924

大厂Android高级多套面试专题整理集合,高级面试题+解析

开头 这里是一些个人开发者接私活和自己做软件加广告的一些科普知识。可是做软件,需要服务器,需要后台,对于一些小的开发者,想赚点广告费而又不想做后台使用服务器的人来说,网上提供了一些免费的接口,可以供我们使用,提供了许多数据。在这里我分享两个不错的提供WEB服务的网站。 第一章 计算机网络基础面试题 1、网络面试题 (一)HTTP/HTTPS 1.HTTP与HTTPS有什么区别? 2.HTTP1.0和HTTP1.1的一些区别 3.请求慢的解决办法 4.Http的request和response的协议组成 5.

m0_56259669的博客 680

2024年安卓最新android组件化架构!我了解到的面试的一些小内幕!成功入职腾讯,安卓上机面试题

文章会持续更新的。绝对干货!!!Android进阶学习全套手册关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。

2401_84538063的博客 753

Android窗口机制:WMS、ViewRootImpl与多窗口管理解析

Android窗口系统是Framework层的核心机制,通过WindowManagerService(WMS)实现全局窗口管理,结合ViewRootImpl完成跨进程通信与VSYNC同步。这套体系支撑着应用界面的显示、事件分发和性能优化,涉及Z-order计算、布局测量和输入事件处理等关键技术。在开发实践中,窗口机制直接影响着Activity/Dialog的显示、多屏适配和悬浮窗实现,特别是在处理内存泄漏和过度绘制问题时尤为关键。理解WindowManager的API调用规范、WMS的Binder通信原理以

weixin_30984001的博客 242

2024年安卓最新Android开发:通过 webview 将网页打包成安卓应用(3),2024年最新字节跳动面试好难

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84519998的博客 1016

Android面试官:2024年最新Android面试精讲,附带学习经验_2024年android 面经

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在!

2301_79098332的博客 1107

android吧!Android开发中常见的一些问题面试专题,高级面试题+解析

前言 最近我开始偷偷投简历了。与老东家的合同快要到期,想知道自己的斤两,续签合同也好有个底,顺便悄悄看看新的工作机会。虽然市场环境不好,但我们身在涨工资靠跳槽的行业没办法。 由于工作了5年了,经验有了,我收到的面试邀请也挺多,但半个月的面试下来却没收到一份满意的offer,真是**“被现在的公司害了”**。下面是我总结的一些面试题,希望对想跳槽的小伙伴有一些帮助。 如何学习Android Framework 既然Framework这么重要,那我们该如何学习呢? 关于如何学习Android Framework

Sunbuyi的博客 160
上一篇: 【Android面试】Activity生命周期专题
下一篇: 【Android面试】事件分发机制专题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值