三年程序员的日常

前言

汇总平时的一些思考。

正文

如何快速上手一个庞大的工程?

这个问题,我已经经历过多次,现在的方式: 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的顺序和编译器特性而定)

静态库和动态库的区别是什么? 详见静态库与动态库的思考

为什么有些错误会到链接时候才发生? 研读《程序员的自我修养—链接、装载与库》

总结

深感自己的不足,充电中。

萌萌的肥熊猫

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

[译] Android 的多摄像头支持

从 Android P 开始,添加了对逻辑多摄像头和 USB 摄像头的支持。这对 Android 开发者来说意味着什么?

49140
来自专栏PPV课数据科学社区

编程 | 用python获取天气数据,并作定时播报

思路 1.调用和风天气的API,获取天气数据 2.用百度语音API,将天气数据合成语音 3.用树莓派每天早上定时播报天气(定时任务crontab + Pytho...

74680
来自专栏Python爬虫与算法进阶

爬虫学到什么程度可以去找工作

随便看看知乎上的教程就可以入门了,就Python而言,会requests当然是不够的,还需要了解scrapy和pyspider这两个框架,scrapy_redi...

15310
来自专栏前端大白专栏

关于react-native的各种报错的最终解决方案

26690
来自专栏程序员互动联盟

原来软件开发有这么多职位

说起软件开发,现在是无人不知,无人不晓。好多人可能以为软件开发就是做一样工作的,其实不然,软件开发也分很多种类型,很多方向。做为一个过来人,简单介绍一些常见的开...

37460

无服务器体系结构简介

无服务器架构和函数即服务(FaaS)是当下云计算领域的大热门。除了微软和亚马逊以外,还有很多厂商提供FaaS。本文对无服务器体系结构进行了简短的介绍,并试图解释...

24190
来自专栏web前端教室

如何从零开始,形成自己的模块化思维方式?

计算机这东西不是凭空出现的,它是为了解决一些实际的问题,有很多时候是对现实世界的模拟。遇到问题时,经常会有人说,要有大局观,要具体问题具体分析,也可以牵强的解释...

15020
来自专栏腾讯移动品质中心TMQ的专栏

【腾讯TMQ】测试分析?就这么简单!

在软件测试过程中,以最小的成本将软件质量风险降至最低,这就是精准测试。宏观上,测试分析是响应精准测试的实践,贯穿整个测试过程,并对整个测试过程起指导作用。

54700
来自专栏沈唁志

详解Linux运维工程师必备技能

40020
来自专栏CSDN技术头条

大规模数据集成: Linked Data

在本系列的前两篇文章(“ 使用 RDF 创建数据网络 ” 和 “ 使用 SPARQL 查询 RDF 数据 ”)中,您了解了资源描述框架和 SPARQL 协议和 ...

24980

扫码关注云+社区

领取腾讯云代金券