自称是资深Android程序员的面试现场,结果被面试官吊打~

news2024/11/25 4:58:11

1背景

牛哥工作五年了,是一名“资深”程序员(嗯…至少他自己是这么认为的)

牛哥所在的公司已经两年没有涨过工资了(嗯…至少他是两年没涨过了) 牛哥坐不住了,这位“资深”程序员打算去“外面的世界”看看,牛哥学历还算不错,于是找到了大学同学,得到了阿里内推的面试机会。

2伤害不高,侮辱性极强

面试官很和善,牛哥坐下自我介绍完毕之后开始技术面试

面试官:用过广播没有呢?

牛哥:广播?这个用过的(牛哥内心os:谁特么没用过广播啊,这有什么好问的)

面试官:那可以说说广播的注册方式吗?

牛哥:有两种注册方式,静态注册和动态注册(阿里面试,就这水平?)

面试官:你知道为什么要设计这两种方式吗?

牛哥:(啊这…从来没想过这个,猜一下吧)可能是因为用途不同吧(此时语气明显不自信了),一是为了在Activity生命周期内有效,这个是动态广播;静态广播是为了在程序关闭的时候也能收到。

面试官想了下:这么说也没错,但是还差点意思,你知道为什么在程序关闭的时候静态能收到?

牛哥:这个可能是广播的设计原理吧…(有点顶不住啊,特么不就是一个广播么,会用不就得了,哪这么多问题)

面试官笑了笑:那说说广播底层的设计原理吧

牛哥:是Binder

面试官:那为什么要用Binder呢?Binder的原理是什么?Binder的优势是什么?为什么Binder不用socket实现?

牛哥人傻了,面试官一顿底层给牛哥直接整懵逼了,原来之前每个自以为很low的问题都是在自己挖坑,越往下越懵逼。

接下来的每个知识点也是如法炮制的问法,牛哥开始还能说几句,问到后面就一句也说不出来了。

面试只进行了20分钟,牛哥就“回家等通知”了。

3还有这好事?

牛哥碰了一鼻子灰,回去百度了下发现,原来Binder是面试必问题!

Binder和Handler至关重要!四大组件的通信原理底层都是Binder,Intent数据传递也受到Binder控制!

对面试结果不甘心,憋着一口气,牛哥想一次性把Binder和Handler都掌握起来,可是搜遍全网,找到的东西不是知识点太零散了,就是讲的不够通透。沉浸在烦恼中的牛哥没注意背后走来的同事。

同事:干啥呢,这些小广告可全是病毒,你要慎重啊!

牛哥:吓我一跳!在找Binder个Handler的学习资源呢。信息爆炸,找个精准点的资源太难了!

所以为了帮助到大家更好的了解Android Framework框架中的知识点,这边查阅大量的素材,整理了一下的 Android Framework 核心知识点手册,里面记录了:有Handler、Binder、AMS、WMS、PMS、事件分发机制、UI绘制……等等,几乎把更Framework相关的知识点全都记录在册了

《Android Framework学习手册》:https://qr18.cn/AQpN4J

  1. 开机Init 进程
  2. 开机启动 Zygote 进程
  3. 开机启动 SystemServer 进程
  4. Binder 驱动
  5. AMS 的启动过程
  6. PMS 的启动过程
  7. Launcher 的启动过程
  8. Android 四大组件
  9. Android 系统服务 - Input 事件的分发过程
  10. Android 底层渲染 - 屏幕刷新机制源码分析
  11. Android 源码分析实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/461327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

〖ChatGPT实践指南 - 零基础扫盲篇④〗- OpenAI API 相关介绍、提示-Prompt 与 完成-Completion

文章目录 ⭐ OpenAI API介绍⭐ 提示-Prompt 与 完成-Completion 介绍 这一章节将为各位小伙伴介绍一下 OpenAI 的 API 相关内容,以及在 ChatGPT 中两个经常被用来比较的名词:“提示-prompt” 与 “完成-completion”。 ⭐ OpenAI API介绍 OpenAI API 概…

Fido无密码认证示例部署运行

文章目录 什么是FIDOwebauthn部署运行访问测试 本文对fido基本概念进行总结说明,并部署运行一个实际的例子,可以直观的体验fido无密码认证。晚上的例子方便后续实现相关功能。 什么是FIDO 常见认证方式的问题 目前流行认证方式普遍存在一些问题 用户名…

Ajax ASP/PHP

文章目录 AJAX ASP/PHP 实例AJAX ASP/PHP 实例实例解析 showHint() 函数AJAX 服务器页面 ASP 和 PHPASP 文件PHP 文件 AJAX ASP/PHP 实例 AJAX 用于创造动态性更强的应用程序。 AJAX ASP/PHP 实例 下面的例子将为您演示当用户在输入框中键入字符时,网页如何与 web…

【打卡-Coggle竞赛学习2023年4月】图像检索与重复图像识别

#### 任务1:图像匹配与检索 图像相似度 图像相似度是用于度量两幅图像之间相似程度的指标。图像相似度可以基于像素级别的相似度或者基于特征匹配的相似度来计算。像素级别的相似度通常是基于两幅图像的像素值来计算的,包括均方误差、结构相似性指数&a…

被遗忘的Java关键字:transient

前言 今天在看项目代码时候,看到了下面这样一行代码,用transient修饰了一个变量,主要作用是做一个全局开关。说实话我是第一次看到这个关键字。激发了我的好奇心,所以就了解一下这是何方神圣。 /*** 全局开关*/public static tran…

Linux第三章

文章目录 前言一、Linux的root用户1.用户和用户组2.查看权限控制信息3.chmod命令4.chown命令 总结 前言 一、Linux的root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(…

QGIS数据可视化学习笔记03——地理解析(地址解析,地理编码......)和数据上图

一、地理解析 百度百科传送门:https://baike.baidu.com/item/%E5%9C%B0%E7%90%86%E7%BC%96%E7%A0%81/2890260 简单来说,就是名称对应QGIS中经纬度等坐标的转换,比如给出北京朝阳公园,你在QGIS中转换为对应的经纬度坐标&#xff0c…

企业网站注册攻略,告别烦恼!

业网站的注册过程可能对于一些初创企业来说比较繁琐,但它是推广企业品牌的重要途径之一。本文将为您介绍企业网站注册的攻略,帮助您更加高效地完成注册过程。 步骤: 1、确定网站类型:在开始注册之前,企业需要确定网站…

ASEMI代理ADI亚德诺ADG5412BRUZ-REEL7车规级芯片

编辑-Z ADG5412BRUZ-REEL7芯片参数: 型号:ADG5412BRUZ-REEL7 开态电阻:9.8Ω 电源断开漏电流:0.05 nA 输入高电压:2V 输入低电压:0.8V 输入电流:0.002μA 数字输入电容:2.5 …

Bean作用域与生命周期

日升时奋斗,日落时自省 目录 1、Bean的作用域问题 1.1、Lombok 1.2、修改Bean对象 2、作用域定义 2.1、Bean的6种作用域 2.1.1、singleton 2.1.2、prototype 2.1.3、request 2.1.4、session 2.1.5、appliction(了解) 2.1.6、webs…

I2C驱动框架介绍以及Linux下sht20驱动开发温湿度传感器获取温湿度

文章目录 一、I2C驱动框架(1)I2C驱动框架介绍(2)I2C总线驱动介绍【1】i2c_adapter结构体【2】i2c_algorithm结构体【3】I2C总线驱动工作介绍 (3)I2C设备驱动介绍【1】i2c_client结构体【2】i2c_driver结构体…

Docker容器---Harbor私有仓库部署与管理

Harbor私有仓库部署与管理 一、Harbor概述二、Harbor特性三、Harbor构成四、Harbor构建Docker私有仓库1、部署docker-compos2、下载或上传 Harbor 安装程序3、启动Harbor4、查看Harbor启动镜像5、浏览器访问创建一个新项目6、通过127.0.0.1来登录和推送镜像7、在客户端上传镜像…

【JavaScript】动态表格

🎊专栏【 前端易错合集】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 🍔介绍 就是在输入框中输入数字后,再按…

Linux安装mysql(5.7解压版)

Linux服务器安装软件时,建议安装解压版,将文件安装在自己指定的目录。安装版一般会将软件安装在Linux默认的目录,如/usr/local/,配置文件在/etc/,日志在/logs,安装目录比较分散,特别是不熟悉该软…

RabbitMQ --- SpringAMQP

一、简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:Spring AMQP SpringAMQP提供了三个功能: 自动声明队列、交换机及其绑定关系 基于注解的监…

代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组 、416. 分割等和子集

文章目录 01背包问题,你该了解这些!01背包问题,你该了解这些! 滚动数组416. 分割等和子集 01背包问题,你该了解这些! 题目链接:代码随想录 二维数组解决0-1背包问题 解题思路: 1.dp…

tensorflow ---gpu的环境配置

1. CUDA配置: 先鼠标右键查看对应的CUDA的版本: 2.安装CUDA: 1.点击 CUDA去官网来下载安装包。 这里我选择的是我电脑支持的9.0的版本: 2.下载CUDA安装包: 3. 安装CUDA的过程: 自定义安装路径&#xff…

RabbitMQ --- 简介、快速入门

一、初识MQ 1.1、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应 异步通讯:就像发邮件,不需要马上回复 两种方式各有优劣,打电话可以立即得到响应,但…

【论文精度(李沐老师)】Deep Residual Learning for Image Recognition

Deep Residual Learning for Image Recognition 残差连接主要干的一个事情是: 如果你新加的层不能让你的模型变好的时候,因为有残差连接的存在,可以使新加的那些层不会学到任何东西。 Abstract (提出问题)深的神经网…

STM32-HAL-定时器(无源蜂鸣器的驱动)

文章目录 一、蜂鸣器的介绍二、常用的无源蜂鸣器的电路三、测试准备四、初始化片上外设4.1 初始化定时器4的通道2为PWM输出模式4.2 编写驱动代码4.3 Logic分析仪查看波形4.4 代码分析 一、蜂鸣器的介绍 有源蜂鸣器: 有源蜂鸣器内部有一个发声电路,也就是“源”&…