资讯详情

安卓rom开发教程!跟Android初学者分享几点经验,写给正在求职的安卓开发

越来越多的人提到移动终端的下半场和Android 开发焦虑等等,也有人喊技术天天变,学不完,昨天 Kotlin 今天 Flutter其实我觉得如果你的技术达到了一定程度,你就不用太在意了。

移动终端真的进入下半场了吗?在我看来,不是,最多说Android 技术探索进入下半年,整个市场乐观。以前是 BAT 的天下,而近两年出来越来越多的独角兽:头条、抖音、拼多多、快手、小猿搜题等,这些公司的业务都在移动端上,他们需要招聘更多的移动端人才。如果你真的想说下半年,你只能说许多小型初创公司正在退出市场,这确实会导致许多入门级工程师失业,但这也表明该行业更加标准化。

而且,对于 Android 对于工程师来说,这是一个好时机。如果互联网下沉,下沉市场的用户将被使用 Android 多还是 iOS 多,大家都知道。

那么,工程师需要做些什么才能生存呢?很简单,要么改变职业,要么改进。我相信,一个熟练的工程师不仅不需要焦虑,而且在这个时代,他可以有稳定的职业生涯和丰厚的收入。

网络:分层模型,TCP、UDP、HTTP、HTTPS

分层模型

UDP

  • UDP 头部结构:来源端口、目的端口、长度域、验证和
  • 特点:不可靠、无序、面向报文、速度快、重量轻
  • 适用场景:适用于即时通讯、视频通话等
  • 应用:DHCP、DNS、QUCI、VXLAN、GTP-U、TFTP、SNMP

TCP

  • TCP 头部结构:来源端口、目的端口、序号、确认序号、SYN/ACK 紧急指针等状态位置、窗口大小、针
  • 特点:面向字节流、拥塞和流量控制、可靠、有序、速度慢、重量大,通过滑动窗口实现流量控制
  • 适用场景:文件传输、浏览器等
  • 应用:HTTP、HTTPS、RTMP、FTP、SMTP、POP3
  • 三次握手:
1\. C->S:SYN,seq=x(你能听到吗?) 2\. S->C:SYN,seq=y,ack=x 1(我能听到,你能听到吗?) 3\. C->S:ACK,seq=x 1,ack=y 1(我能听到,开始吧)  双方都能保证:你能听到我说的话;我能听到你说的话。因此需要三次握手 复制代码 
  • 四次挥手:
1\. C->S:FIN,seq=p(我说完了) 2\. S->C:ACK,ack=p 1(我知道,等一下,我可能还没说完) 3\. S->C:FIN,seq=q,ACK,ack=p (我也说完了) 4\. C->S:ACK,ack=q 1(我知道,结束吧)  S 收到 C 消息结束后 S 也许还没说完,就不能马上回复结束的标志,只能等了再告诉 C :我说完了 复制代码 

HTTP

  • 超文本传输协议,明文传输,默认 80 端口
  • POST 和 GET:Get 参数放在 url 中;Post 参数放在 request Body 中
  • 访问网页流程:DNS 域名解析、TCP 三次握手建立连接,启动 HTTP 请求

HTTPS

  • 默认 443 端口,使用 SSL 协议对 HTTP 加密传输数据,安全
  • 加密过程:Client/Server 密钥通过不对称加密生成,然后用这个密钥对称加密传输数据

算法:数据结构、常用算法

数据结构

  • 数组、链表
  • 栈、队列
  • 散列表
  • 树、堆、图

常用算法

  • 排序
  • 双指针、滑动窗口、字符串
  • 递归、分治、二分
  • 回溯、贪婪、动态规划

Java 基础:StringBuilder、泛型擦除、Exception、IO、容器

StringBuilder

  • StringBuffer 线程安全,StringBuilder 线程不安全
  • 实际上是用 StringBuilder 因此,非循环体可以直接使用 ,循环体不好,因为它会经常创建 StringBuilder
  • String.concat 实质是 new String ,效率低,排序耗时:StringBuilder < StringBuffer < concat <

泛型擦除

  • 与修饰成员变量等结构相关的泛型不会被擦除
  • 将擦除容器类型的泛型

Exception 和 Error

  • Exception 和 Error 都继承自 Throwable
  • Error 大多数是指不可恢复的错误状态,如 OOM,所以不需要捕获
  • Exception 分为 CheckedException 和 UnCheckedException
    • CheckedException:编译器必须检查显式捕获,如 io 操作
    • UnCheckedException:无需显示捕获,如空指针、数组越界等

IO 、 NIO、 OKIO

  • IO 是面向流的,一个字节处理,NIO 它面向缓冲区,一次生成或消耗数据块
  • IO 是阻塞的,NIO 是非阻塞的
  • NIO 支持内存映射
  • okio 相比 io 和 nio,api 更简单易用
  • okio 支持超时机制
  • okio 引入 ByteString 改变空间时间,提高性能
  • okio 采用 segment 内存共享的机制,节 copy 时间消耗

ArrayList、LinkedList

  • ArrayList
    • 基于数组实现,快速搜索:o(1),增删慢:o(n)
    • 初始容量为10,扩容通过 System.arrayCopy 方法
  • LinkedList
    • 基于双向链表,搜索缓慢:o(n),增删快:o(1)
    • 队列和栈的调用包装了

HashMap 、HashTable、HashSet

  • HashMap(允许 key/value 为 null)

    • 实现基于数组和单向链表的数组 HashMap 主体;链表存在于解决哈希冲突,存储在key和value结合的实体
    • 通过数组索引 key.hashCode(还会二次 hash) 获得,通过链表 key.equals 索引
    • 当哈希冲突落在同一桶中时,直接放在链表头(java1.8后放在尾)
    • JAVA 8 中链表数量大于 8 时间变成红黑树存储,搜索时间由 O(n) 变为 O(logn)
    • 数组长度总是2n次方:这样就可以通过位置操作实现取余,从而让 index 能落在数组长度范围内
    • 加载因子(默认0.75)说明填充比增加了多少,填充比大:链表长,搜索慢;填充比小:链表短,搜索快
    • 扩容时,直接创建原数组的两倍长度,然后将原对象重新进行hash找到新的index,重新放
  • HashTable(不允许 key/value 为 null)

    • 数据结构和 HashMap 一样
    • 线程安全
  • HashSet

    • 基于 HashMap 元素是实现的 HashMap 的 key,Value 传入固定值

ArrayMap、SparseArray

  • ArrayMap

    • 基于两个数组实现,一个存放 hash;一个存放键值对
    • 存放 hash 的数组是有序的,查找时使用二分法查找
    • 发生哈希冲突时键值对数组里连续存放,查找时也是通过 key.equals索引,找不到时先向后再向前遍历相同hash值的键值对数组
    • 扩容时不像 HashMap 直接 double,内存利用率高;也不需要重建哈希表,只需要调用 system.arraycopy 数组拷贝,性能较高
    • 不适合存大量数据(1000以下),因为数据量大的时候二分查找相比红黑树会慢很多
  • SparseArray

    • 基于 ArrayMap,key 只能是特定类型

Concurrent 集合

LRUCache 原理

  • 基于访问顺序排序的 LinkedHashMap 实现,最近访问的会排在最后

最后为了帮助大家深刻理解,这里放上我搜集整理的,我把大厂面试中整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一键领取:

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全 包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

[外链图片转存中…(img-gVfjsJBK-1615289345689)]

[外链图片转存中…(img-o3XTkJ9g-1615289345693)]

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图,大家可以点击这里自行获取。

标签: xtkj智能传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司