六月
6-17
刷题两个月,只作了30道题,不过自感思维开阔不少。现在能随手写出DP算法、DFS、BFS,对图、链表、排序算法还不是很熟。
6-18
基础的重要性被容易被忽视,不管工作表现出来的“好”或者“坏”,都要注意基础的学习,注重理论的研究。从实际工作中提升只是个幌子,
在实际工作中,有一定抽象能力之后即可进入理论学习。不要被一个阶段的工作给蒙蔽!
今天学习了内核工作队列,学习了贪心算法,并用贪心解决了Jump Game
6-20
贪心算法的核心在于,选择合适的标准来执行每一次的贪心。从技术的角度来讲就是找到每一次当前范围,结合历史结果,在当前范围内做出最优选择。当然最后需要证明这种迭代的缩小问题的方式,最终能导致最优解。
从调试的角度考虑问题,处处都是疑惑;从设计的角度考虑问题,处处都是研究
6-22
leetcode上写了三个二叉树DFS算法,基本都是一分钟以内一次性通过,激动!对DFS记录路径的领悟已经比较深了
6-23
http://www.doc88.com/p-210942932909.html 基本看完计算机网络关键知识点,可以去看《TCP/IP》这本书了
明天开始每天写基本数据结构的实现
6-26
重写的Linux耳机驱动差不多了,但是Linux内核还有待进一步学习呀
6-27
写Linux耳机驱动的过程中,几乎要重学一遍操作系统呀。
到今天位置10天解决了20道leetcode题目,其中有些题目已经很简单了,部分还是很难.
最近做算法有点上头,解完一个还想解。较难的题目周末再看吧,不能打乱学习工作节奏呀
6-29
用图形分析来描述算法,会更加容易理解。
七月
7-9
20多天刷题快40道,真是时间流逝呀,不知不觉就刷了70道题了。后面难度也越来越小,最近开始开排序、查找、树算法了。前面做了太多DFS、DP、贪心相关的了,要开始实现基础算法了。
7-15
今天电话面试,比上次面试好很多,不过还是暴露出很多问题,都是基础问题。
语言问题
应用编程问题
自身优势
项目亮点
设计模式、面向对象
工作经验
自我介绍、分治法、递归迭代转化模式、C语言变量内存分别、面向对象基础知识理解、Linux进程间通信、设计模式、Android后台进程、自身优势、项目亮点
7-16
语言基础
算法设计模式
操作系统、应用编程
7-22
看电视节目,听到几个比较好的句子:
如果你不够漂亮,你可以努力提升你的气质;那如果你任然没有气质,你也可以努力提升自己的内涵;但是如果你依旧没有内涵,最不济,你任然可以成为一个勤劳勇敢的人。
对于容貌,我想说几点。第一,整容是一个个人行为,他并没有损害到其他人的利益,我觉得应该尊重个人选择;第二,我们并不完全抹杀容貌对于人生的意义,但是需要强调的是,我们并不希望过分的放大或者强调容貌,对于人生的决定性意义,因为它并不能成为人生的决定性意义。我们太过强调容貌的意义,还否认掉其他人在人生道路上奋斗的意义。同时,还会会使我们忽略掉性格、价值观等等因素在恋爱、婚姻中对于我们的意义。
7-24
前段工作生活上的事有点多,同时在完成了某个目标之后,人的确会有迷茫松懈的时候,没法沉浸到学习研究状态。
最近事比较少,继续开始学习研究之旅,重点在Linux内核机制和C语言基础方面。对于算法,已有了初步的基本功,需要精进但现在不应该是学习重点了
7-26
看完搏击俱乐部,思考自由这个问题都停不下来。蛋疼的哲学家,非要给自由个定义和出路。自由的含义那么多,非要浓缩到一个词和一个解释中去,真是吃多了没事干。
个人的见解是,自由和限制相伴而生,能了解到限制的存在,你就能获得相对的自由。法律上的自由,是规定了人能行使哪些权利,同时也规定能禁止做哪些事情,这是看得见的明文规定。而在意志范畴,意志和环境影响也是相伴而生的,能了解到环境的影响,你也能获得相对的思想自由,而这里环境的影响不是明文规定的,但是可能是客观存在的,能够认知到环境的影响或者无影响,才能不被环境完全制约。对于精神生活,精神与物质生活的限制相伴而生,物质生活从某些角度来说会限制我们的精神生活,以为物质越多精神会越快乐,以为得到了物质就能获得心灵满足,这样过分的强调物质反而让精神生活沦陷,让自己变得虚无空洞。如果在一开始面对物质生活的限制时,我们就能了解到这些,我们的精神家园是不是会更加牢固一些。
获得自由是以了解限制为基础的,不然我们逃出了一座监狱,外面还会有更大的一座监狱等着我们。我们改变了一个环境,另外一个环境依然会左右着我们。了解这些限制,起码让我们能够有更多的选择余地。
7-30
最近看了很多算法分析,不得不吐槽,一个简单的算法思想描述得多高深多厉害,但是画一个图,配上文字说明,不就很容易理解了吗。
看到Linux中的CFS算法,虽然现在没完全弄懂,不得不说解释的最好的还是一些论文,不过依旧没有好的配图,让你往而止步。
数形结合,这个思想在很多方面多非常有用,它利于我们认识新的事物,多希望写算法书能出这么一本数形结合的,利于初学者学习而且让人映像深刻。
继续研究CFS,争取画个简单的图形出来。
7-31
6月中旬到现在一个半月,刷题到100道了,对能对问题形成基本的算法思路,现在的主要缺点在于:算法考虑不全面,分析问题急需求结果不注意细节思考。
第二趟刷题赶快到来噢
八月
8-5
开始弄毕业设计相关的东东了,系统功能模块很复杂,心态要平和不能急躁。最近重新看Gralloc模块,采用感性认识->理性分析的方法,的确有利于深入学习一个事物,今天看懂了Gralloc模块所做的事情,并画了图解,不过这其中的fucking code还需要慢慢消化。
8-10
华为的一面技术面主要是介绍项目,二面hr面问了下面的问题:
1.自我介绍,我介绍了学校哪里人学习经历、项目情况
2.实习公司情况,和谁关系最好
3.平时的兴趣爱好
4.面对压力怎么办
5.面对过的最大的挫折
6.参加的学校活动
7.家庭情况
8.有什么要问的
8-17
最近比较懈怠,工作琐事太多,没法集中注意力学习。最近学习了 FB驱动、Gralloc模块、Android进程间通信机制之Binder、了解了Surface与应用程序之间的交换。接下来要继续看:SurfaceFlinger原理,Android匿名内存管理、WindowsManager。come on!
8-19
C专家编程 -> C语言 checklist -> leetcode-> C++
Linux驱动模型 -> Linux内核笔记 -> Linux进程调度算法CFS -> Linux文件系统 -> Linux内存管理
Root后软件删除问题
今天看完了《C专家编程》,部分内容掠过。前几章讲得比较好,后面的链接讲得不是很好,不如看《深入理解计算机系统》。当然了最后引入C++的部分十分棒,从理论的角度初学者的角度来谈的。抽象:抽取事物的本质,保留能体现事物本质的关键点;封装:将属性和方法组合在一起;类:用户定义的类型,使用封装方法得到;对象:类的一个实例;继承:描述的是类与类的父子关系,子承父业,子类会沿用父类的一些方法和属性;多态:运行时函数动态绑定,考虑的是在不同层次的类、或者同一个类中,同名函数之间关系的问题,也就是说一个函数名有多个实现体,系统需要根据条件判断一个函数到底绑定到哪个实现体。同时对于类这种模块化的东西,需要保护模块的安全,因此类之间也会涉及到安全权限相关的控制。(理解不够到位)
覆盖:
在基类中定义了一个非虚拟函数,然后在派生类中又定义了一个同名同参数同返回类型的函数,这就是覆盖了。在派生类对象上直接调用这个函数名,只会调用派生类中的那个。如果用基类的指针来调用这个函数,只会调用基类的同名函数,不会调用派生类的同名函数。
重载:
在基类中定义了一个非虚拟函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。
多态:
在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声雷中的那个函数,调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。
函数覆盖和虚函数覆盖区别在于,用基类指针调用这个同名函数时,前者调用的是基类中的函数,而后者调用的是指针指向的对象(所在类)的函数。
对C++有一些基本的了解,但是之前被人问道“什么是继承,什么是多态”时,发现自己尴尬的不知怎么描述好,加强理论学习很有必要。
8-21
红黑树是个神奇的东东,定义了红黑一定层度交替,并且根到叶子节点包含黑色节点数相同,那么最长的路径不会超过最短路径的两倍。
五条性质,这里写出四条:
1.要么红,要么黑
2.根黑叶子黑,叶子是空节点
3.红色节点的子节点一定是黑色节点(一个路径上不会出现红红节点)
4.根到叶子节点的所有路径中,包含的黑色节点是相同的。
认识:红与黑的规定,是为了实现树的半平衡,而它本身又是一颗BST,故时间复杂度也比较好
8-28
毕业设计进展了一小步,拿到了gralloc源码,并且分析完毕;并且对上层应用绘制图形有了一个宏观的认识。接着是框架层SurfaceFlinger、WindowsManager还有很长一段路要走。。。
又要开始调整方向了,继续学习Linux内核、Android系统为招聘做准备。
九月
9-2
《创新思维》:创新并不一定都是突发奇想的,创新的过程也是有迹可循的。创新的根源在于变化,“知变、应变、求变”是对于变化的三种不同境界。
9-14
不论结果如何,跟几年前高考一样,高考和面试都只是人生路上的其中一站。你的真正核心竞争力不是进哪所名校哪所名企,而是存在你骨子里的上进心或热爱钻研技术的态度。
9-16
当初选择嵌入式方向,主要是两个原因:未来有前景、个人系统的功底锻炼。从短期找工作看,嵌入式、底层方向找互联网公司的确有缺陷,但是不能因此否定了之前嵌入式、底层工作的意义,一年多的学习,让我在操作系统的学习认知上更加轻松了,这是我在技术这一道路上最大的收获。
9-26
百度面试反思:面试官有各种个样的,这次面试百度,面试官的风格是问一个个基础的问题。我的回答基本都对了,但还是挂了,想了很久才发现原来我的回答没能展现出自己。面试官问内存管理布局方面,我就给他画了内存布局,其实我还可以给他讲Linux内存管理、讲虚拟地址空间、MMU和页表、缺页处理、讲缓存的策略。
归根到底,还是面试前的思考少,自己会的东西没能组织好。面试需要尽量展现自己,理解是一方面,用什么样的方式展示是另外一方面,都要做好才能给人好的印象。
9-29
招聘基本都进行完了,从招聘中学习到了不少东西。下一阶段继续招聘前想做的事情:写一个简单的内核、设计模式与Linux编程继续学习。
物联网行业发展状况:
制约 : 1.标准不同统一,底层的zigbee等无线协议还没有形成统一标准
2.安全性问题,互联网采用云服务数据上传到云端可能不安全,需要一些加密保护等等技术成熟
3.产业链没有形成,大公司摩拳擦掌但是始终还没有形成产业链
展望 : 1.IPv6技术的发展与物联网结合,互联网与物联网相辅相成的发展:a简化的IPv6标准6LowPAN b.低速、动态链路的路由标准RPL c.Coap d.开源嵌入式系统Contiki集成了一些嵌入式标准,并投入使用
2.大公司牵头已经在做,苹果的homeKit,与海尔合作等等,大公司的带动,在将来一定会实现标准统一,只是时间问题。
十月
10-9
最近在等签offer,offer选择也是个难题,等签完开始学习吧
十一月
11-15最近一个月比较放松,休息时间居多。找了一本java入门书籍开始看,原来对Framework中的很多困惑都是java问题,本身Android基于java语言,牢固的基础才能构建上层建筑呀。Java语言学起来很轻松,相比C++简单简洁一些,不过现在看的仅仅只是初步的学习书籍。
十一月
《Java从入门到精通》 魔乐科技 看完了,是一本非常好的入门书籍,重新学习了java语言基础、java中的面向对象、java常用类库、java类集框架、java多线程、java IO、java网络编程。 接下来看下一本