NDK
1、学习内容
- C 语言复习(100 %)
2、输出文章
题解 | 提示 & 思路 |
《NDK | C 语言复习笔记》 | 记住最重要的点 |
算法 & 数据结构
1、LeetCode 打卡
- 周日打卡:131. 分割回文串 I(Medium)
- 周一打卡:132. 分割回文串 II(Hard)
- 周二打卡:1047. 删除字符串中的所有相邻重复项(Easy)【题解】
- 周三打卡:224. 基本计算器 I(Hard)【题解】
- 周四打卡:227. 基本计算器 II(Mediumn)【题解】
- 周五打卡:331. 验证二叉树的前序序列化(Medium)【题解】
- 周六打卡:705. 设计哈希集合
2、输出文章
题解 | 提示 & 思路 |
《算法 | 计算器系列》 | 先将中缀表达式转换为逆波兰表达式,再求解逆波兰表达式 |
逻辑题
找出有毒瓶子问题
有 15 个瓶子,每个瓶子装满了液体,其中最多有 1 个瓶子的液体有毒。现在有 4 只老鼠,如果老鼠喝到有毒的液体,一个星期后会挂掉。
现给你一个星期时间,找出有毒的瓶子。
- 1、将编号为 1、2、3 …15 的瓶子,转为二进制数编号,例如:
1 -> 0001、2 -> 0010、3 -> 0011、… 、5 -> 1111
; - 2、四只老鼠对应四个「二进制位置」,如果二进制编号上为 1 ,则将该瓶液体喂给对应位置的老鼠;
- 3、一周后,看对应位置的老鼠状态,活着填
0
,挂掉填1
; - 4、将二进制转换为十进制,就得到有毒瓶子的编号。
Android
- Android 12 Developer Preview 特性梳理 (40%)
扩展阅读
《 “无代码” 与我们的距离》 —— ISUX 著
“无代码” 指的是无代码开发平台(NCDP,No-Code Development Platform),本质上是通过图形用户界面这种可视化的形式替代程序员一行行编写代码的传统开发方式。这意味着研发上游的产品经理和设计师可能比开发人员更需要关注 “无代码” 趋势对未来产品形态带来的影响。
优点:低门槛、低成本、高效率。
在面对需要为非专业用户提供无代码平台的设计时,如何简化复杂,把握非专业用户的心智模型而跳出专业开发者和设计师自身的思维习惯,是实践中会遇到的挑战。
《腾讯文档 | 数据化设计》 —— ISUX 著
数据是什么 / 数据是怎么产生的:二手资料数据 + 问卷调研数据 + 应用埋点数据
应用埋点类型:曝光埋点 + 操作埋点 + 时长,基于这三类原始数据,可以计算出点击率、功能渗透率、人均点击次数、人均使用时长等具有对比价值的数据。
- 曝光埋点:页面或条目展示的次数;
- 操作埋点:对某一区域(按钮、卡片、提示条等)进行手势操作(点击、双击、长按、滑动等);
- 时长埋点:标记以上两类埋点的时间差来获得。
数据分析在 UX 设计中的作用:
- 1、需求评审:以提升最终业务数据为目标,评估需求的价值贡献和优先级;
- 2、需求挖掘:数据作为产品健康度的体检指标,为设计圈定问题域;
- 3、设计决策:借鉴用户行为数据,对方案进行快速决策;
- 4、设计实验:采用数据实验对设计方案进行择优或改进。
《程序员成长路线》 —— 毕玄 著
编程能力成长:
- 初级:会用
- 中级:会查问题和避免问题
- 高级:懂得高级 API 和原理
系统设计能力的要点:
- 1、子系统职责划分: 在超大型技术方案中,很容易出现某些部分职责重叠和冲突,如何划分子系统非常重要;
- 2、控制系统风险 超大型系统设计一定是多个专业领域的架构师和大架构师共同设计,怎么确保在执行的过程中系统最重要的风险能够被控制住。这个时候需要在设计中考虑和遵守系统设计原则(例如:最基本的原则是接受系统不可用,但也要保证数据一致)。
- 3、考虑问题全面性: 超大型系统设计会涉及业务层面、各种基础技术层面、基础设施层面,它的执行节奏也需要综合考虑人力投入、机器成本、基础设施布局述求、稳定性控制等。
系统设计能力成长的重点:
- 1、现在一两个技术领域做到专业,然后尽量扩大自己的知识广度;
- 2、练习自己做 tradeoff 的能力。
《Beginner's Mind》 —— 孟岩 著
我们在学习知识的时候,并不是凭空学习新知识,而是根据我们大脑中已有的知识,来解读我们读到的新东西。一方面,这会加快我们理解新知识的过程,也可以帮助我们更好地记忆,构成知识的复利。但是另一方面,如果新知识和旧知识差别过大,也会给我们带来困扰:我们的大脑会本能地抵御这些冲突,选择性的接受大脑认为 “合理” 的知识。
人们对于新事物的会做出不同的反应:有的人对一切好奇,每天都在进化、迭代甚至推翻昨天的自己;有的人像倒满的茶杯,聊天的时候根本不管你在说什么,只想把自己想说的说出来,对于新知识本能排斥。
Pony马曾经说过,做产品要具备 “一秒变小白” 的能力。如果没有 Beginner's Mind,不能真切地体验到用户的困惑和问题,而是按照自己的理解来臆想功能,产品就会出问题。
技术分享
《Kong 网关分享》 —— 刚爷 讲
网关: 外部应用访问内部接口的统一入口;
功能:
- 1、接入: 接管所有 API 接口服务;
- 2、聚合: 聚合所有后端业务服务;
- 3、中介: 实现安全、验证、路由、过滤、流量管控、缓存等策略;
- 4、管理: 提供日志、A/B 测试、监控等管理。
实现: Nginx、Kong、SpringCloud 等
《归一化算法及应用》 —— 滨哥 讲
归一化: 将数据的值压缩到小区间,例如 [0,1];
价值:
- 不同指标的可比性
- 提高模型精度
- 修正数据收敛速度
实现:
- 离散标准化:Y=x−XminXmax−XminY = \frac{x - X_{min}}{X_{max} - X_{min}}Y=Xmax−Xminx−Xmin。最简单,适合于数据集中,XmaxX_{max}Xmax和XminX_{min}Xmin稳定的场景; Z-SCORE 0 均值标准化:Y=x−μσY = \frac{x - \mu}{\sigma}Y=σx−μ,其中μ\muμ是均值,σ\sigmaσ是标准差。适用于XmaxX_{max}Xmax和XminX_{min}Xmin未知,需要度量数据相似度(分类)的场景;
- Sigmoid 函数:Y=11+e−xY = \frac{1}{1+e^{-x}}Y=1+e−x1。也称逻辑回归函数,收敛曲线平滑;
- Tanh 双曲正切函数:Y=1−e−2x1+e−2xY = \frac{1-e{-2x}}{1+e^{-2x}}Y=1+e−2x1−e−2x。相比 Sigmoid 函数,收敛速度更快
- ReLU 线性整流函数:y={x,x>0a(ex−1),x≤0y=\begin{cases}x,&x>0\\a(e^x-1),&x\leq0\end{cases}y={x,a(ex−1),x>0x≤0。在 x>0x >0x>0 区间是一个线性函数,不存在 Sigmoid 函数的梯度消失问题。
应用场景: 列表排序。