前言
汇总平时的一些思考。
正文
如何快速上手一个庞大的工程?
这个问题,我已经经历过多次,现在的方式:
1、整理基本框架,研读代码规范,熟悉团队开发习惯;
2、熟悉业务和对应模块,复杂细节暂时当黑箱处理,重点研究流程;
3、从本地存储=>UI处理=>网络请求=>同步/异步处理 的过程进行分析,尽快上手业务开发;
4、善于利用Xcode,有call和caller分析调用关系,有view debugger理清视图层级,有lldb可以跟随代码逻辑;
在技术融入的同时,了解团队交流方式,适应工作节奏,也是很重要的一点。
PS:我13号入职,14号装好电脑就被分配需求,并且排期是在16号体验。
项目的工程很庞大,在同事的指导下找到对应的类,接下来就靠自己的解决方式。
产品体验
iPhone的UC浏览器用了2年,QQ浏览器用了半年的用户,对浏览器使用的自我分析。喜欢UC的几个点:
1、奇趣百科,小贱君的日报、神回复等;
2、UC资讯,UC有震惊部、竹鼠、迪拜、鲸鱼屎;
3、UC的小说模式,非常好用,比付费的QQ阅读体验还好;
4、网页浏览结果更好,多年浏览器经验的积累;
5、视频播放体验,UC有半屏模式、可拖动窗口模式、全屏模式;
以上都是UC的优点,通过长时间使用,用户对工具的依赖,工具上的便利性成为竞争壁垒;
我在浏览器的几个高频使用点:看小说、看资讯、看视频、看网页、看漫画、下载,UC都做得非常好;
其他的技术指标,省流量、省电量、流畅度,需要理性的数据支撑,但我相信UC也能排在前列(早在诺基亚的时代,UC的省流量模式就是看小说的一大利器)。
那QQ浏览器如何脱颖而出?
QQ系列的产品有自己天然的优势:庞大的社交链和用户群。
在工具的强大性比不上竞品的时候,通过简化使用流程,降低上手门槛,再用自己的平台优势去抢占新用户市场(包括儿童和中老年群体);
在用浏览器浏览资讯的时候,会有评论参与、分享话题的需求,这方面是QQ浏览器的方便之处;通过给浏览器赋予更多社交属性,QB也形成了自己的竞争壁垒;
在留足时间给团队去完善产品的功能与性能之后,未来QB会是UC的一大竞争对手。
在平时的工作中,要思考需求背后的产品特性以及通用性。
每日固定的时间做信息的抽取和总结,在信息繁杂的背景下,养成思考的习惯。
对于三思而后行的看法
首先,在多数情况下,我相信三思而后行是更好的选择。
但习惯是很难改的,这个和个人的性格有关。
像我这么不耐烦的性格,对于三思而后行,总是只能做到一思,二思,经常通盘思考觉得可以,就想着边做边想。
这种情况,在生活中习惯后,就会带到工作中。而在之前的工作环境,因为对业务非常熟悉,这种习惯并没有造成什么影响。
最近犯了一些低级错误,先是看错产品的需求文档,在询问产品时才发现是自己没看清楚需求;
第二个是把下版本的内容提前提交,导致灰度分支无法正常创建;
晚上做题的时候,本来自己已经想好解法(但没有把解法写下来),几个细节都考虑过,结果还是不小心陷入越写越复杂的坑;其实之前已经养成先写题意再分析解法、最后实现的习惯,但是今天因为时间紧张,在没有完善的验证解法,就直接开始写,导致花费更多的时间。
对于某些问题,我知道某些流程是容易犯错的,就要规定好这个流程,并且尽可能避免自己越过。
在每次碰壁之后,提醒自己分析情况,如果是因为大意,如何避免下次又粗心。
经典重读
计算机主要组成部分:
- 处理器;
- 主存;
- I/O模块;(键盘、鼠标、硬盘)
- 总线;(模块间通信的支持)
操作系统的功能是什么?
管理协调各种硬件资源,为应用程序提供统一的抽象环境。
如何保证进程运行的独立性?
操作系统会保存进程运行时的所有状态信息,也就是上下文(也叫进程状态,包括PC程序计数器、寄存器、内存数据),通过系统调用中断进程运行,并在中断结束后恢复上下文继续运行原来进程。
线程是什么?
操作系统的最小执行单元,可共享进程的数据。
程序运行的栈是什么?
栈是内存中一组连续的存储单元。
栈内存为什么要用栈结构,不用队列、数组?
堆内存为什么要用堆结构,不用栈、队列?
栈结构特性符合函数调用特征,堆结构特性符合内存分配的特征。
中断是具体有哪些?
- 程序中断;除0、访问越界等
- 时钟中断;处理器时钟的周期性中断;
- I/O中断;I/O设备开始、结束或者异常等情况的中断;
- 硬件中断;掉电等;
多个中断如何处理?
中断优先级。
hello.c 如何编译成可执行文件?
见编译与链接过程的思考。
思考🤔:当一个链接器报错,无法解析一个引用时,代表了什么意思?
如果在文件A和文件B都定义了全局变量g,在文件C引用文件A和文件B的变量g,g变量会是哪个文件的变量?
符号冲突,默认无法编译通过。(可以通过编译指令强制编译,具体引用哪个文件,视引用A、B的顺序和编译器特性而定)
静态库和动态库的区别是什么?
详见静态库与动态库的思考。
为什么有些错误会到链接时候才发生?
研读《程序员的自我修养—链接、装载与库》。
总结
深感自己的不足,充电中。