作者通过一些简单的例子,阐述在编程面试中排名前10算法的相关概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。文章从Java的角度看问题,包含下面这些概念:
由于篇幅限制,具体的概念分析请阅读原文。
作者此前曾写了一篇《对函数式语言的误解》的文章,他将面向对象和函数式并列,看上去似乎各打五十大板,但对面向对象的批评比较简单,就是面向对象总是要实现万事万物皆对象的理念,所以对函数的实现比较致命,函数无法作为数据来传递,所以需要各种各样的设计模式来弥补。
面向对象编程和函数式编程的问题在于:不论是面向对象编程还是函数式编程,如果你走了极端,那都是错误的。面向对象编程的极端是一切都是对象(纯面向对象)。函数式编程的极端是纯函数式编程语言。作者的观点可归纳为如下三点:
你是为了什么而坐程序员的呢?作者的原因是:“我喜欢解决难题,用创造性的方式解决,那会是一种让我极度兴奋的体验。”
可有一天:“我花了大量的时间和精力为老板将一个以前一直是手工处理的工作改进成了自动处理,而在之后的一次会议上却被质问,‘你花了这么多时间究竟干了什么?’”
这件事情让作者十分的郁闷,他认为自己身陷这样一个消极的环境中时,斗志会逐渐的消磨掉、腐化掉。甚至问自己:“你干嘛不知好歹的去改进这些东西?很显然,他们对你所做的努力嗤之以鼻。”
他问大家做这个程序员还有意思吗?如果你遇到这种情况你会怎么做?
条件控制是编程中与生俱来的一种结构,来自程序员界一位几十年的老鸟称,“对我来说,除了给我带来麻烦外,没有发现任何的用处。一次又一次,我不断发现,越少的if语句,越少的switch语句,越少的循环,就会是越好的代码。通常这其中的原因是程序员用编程语言实现了更好的抽象归纳。他们并不是有意识的避免使用控制结构。但他们确实做到了这些。”
在文章,他自己写了代码并找出了解决的办法,可点击标题至原文查看范例。
作者认为,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。如果你想要看一些编码套路的例子(也就是努力学习和磨练编程技能的方法),下面或许会给你一些启发:
上面是Steve Yegge开出的清单,但在作者看来,编程更在于人,而不是代码。他认为只需要两个招式:
JavaScript就在这里随时等候你的召唤,但是也许你还没有准备好如何使用他。为什么不用jQuery呢?因为它很慢并且你的网站真的不需要这些多余的负担。
作者在文中主要讨论了:如果仅为使用个选择器($)或者类似的东西,是否真的有必要加载jQuery。在文章他还举了范例,可以点击标题前去查看,他还称可以使用浏览器的console来发现更多的原生的东西。
对于很多人来说,Windows似乎会随着使用的时间变长而变慢,不少用户通过定期重装Windodws来解决这个问题。但是,你真的需要定期重装Windows吗?你多久重装一次呢?
原文作者给出了久而久之Windows会变慢的原因、如何避免Windows随着使用时间的变长而变慢的方法、告诉你什么时候才需要重装Windows,以及如何快速地重装Windows。
另外,如果你想测试软件,但是又不允许软件搞乱你的系统的话,可以考虑安装一个虚拟机或者使用沙盒工具(如Sandoxie)从你的系统中隔离出来,这些软件不会扰乱你的主操作系统。
作者分享的方法如下: