LeetCode 300 题以内需要付费才能查看的所有题目解答。
156
157
158
159
161
163
[……]阅读全文
一个纯正程序员的啰嗦
好久没有更新了。回来报个到,也向关注和提醒我 blog 更新的朋友们道个歉。原因在于,最近非常忙,忙于找工作。现在下家还没有定下来,手头有几个 offer,还在考虑中,但是很快会决定下来,然后更新更进一步的信息。无论如何,blog 的更新已经恢复正轨。
通常人的一生中不会有太多属于自己的求职季节,尤其像我这样的,总觉得在一个地方需要积累,因而并不是频繁跳槽的粉丝。第一份工作在华为,我干了三年半;第二份工作在亚马逊,直到现在,超过了五年半。职业生涯的前方就将是第 10 个年头。
为什么是现在?
三年半前我通过 L 签证来到西雅图,而 L 签证是不能够更换雇主的,因而自然也不用考虑工作变更的可能性。去年 [……]阅读全文
一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第 k 个是多少。假设排列的下标从 1 开始,而非 0 开始。
这个问题如此之简单而熟悉,可它却可以是很多现实问题的某一个子问题的抽象。它本身相关的问题其实就不少,而且还可以不断演进,成为不同复杂程度的问题。
关于这个问题的分析和演进,我们不妨从一左一右两条分支——堆排序或者快排,来分别进行。在不断演化问题的时候,会这两个分支之间跳来跳去,为了尽量清晰的考虑,我采用一种新方法——使用 【分支:堆排序】和 【分支:快排】来标注。
Java 中快排用 Arrays.sort 就可以了,如果是堆排序需要用到 PriorityQueue。 用 Array[……]阅读全文
其实老早就像写一点这个话题。几乎我见过的所有大型系统中,都需要一个唯一 ID 的生成逻辑。别看小小的 ID,需求和场景还挺多:
独立的生成服务
比如数据库。最常见的一种,也是应用最多的一种,就是利用数据库的自增长序列。比如 Oracle 中的 sequence 的 nextVal。有多台 application 的 h[……]阅读全文
最近完成了一个使用 React+Redux 组合的项目,以前仅仅是接触了解以及学习,并未正儿八经地使用过,因此这一次可以说是第一次完整地再一个项目当中使用。因而对于认识之浅显请轻拍。
从架构和层次的层面,这个组合给我最好的感受是干净利落的解耦。有不少 JavaScript 框架尝试解决解耦问题,但是到了落实的层面上很容易出现分层分模块不容易严格控制,缺少清晰标准等问题。但是 React+Redux 的组合没有这个问题,我们把应用中 JavaScript 的部分分层为 action、client、config、constant、reducer、store、util 和 view 几个部分,其中 view 又进一步划分 [……]阅读全文
昨天去参加了一个公司内的 expo,大致就是以团队为单位组织起来,做广告,招呼各种工程师去看,有团队介绍,产品介绍,技术介绍;有披萨、啤酒和零食;也有一些填方格的活动供参与和纪念衫可以领取。我们组也大张旗鼓地伴着各种搞笑的口号和宣传材料上阵了。挺有趣的一件事情,也是很有工程师文化的事情。
以前谈过不少关于工程师的话题,比如这个、这个和这个,今天想再谈谈。
其实自我工作以来,软件工程师这个职位变化很大,无论是职责、技术、待遇,但是不变的是,我看到优秀的工程师至始至终非常抢手,而且需求量很大。不扯没用的,任何行业优秀的角色都受欢迎,但是就我熟悉的 IT 公司来说,软件工程师始终处于特别的存在 [……]阅读全文
鸡汤满世界都是,我很少在意;知识分子谈论观点和看法千千万,多么奇葩有趣的都有,我很少痛恨知识分子。但是于丹是个例外。
与我而言,知识分子如果只专注分内之事,执着于学术范畴,无疑是所谓的 “本行工作”,无论正误,都是无可过度指摘的。毕竟观点迭出才有万象世界,只有反复质疑才有科技与社会之进步。
还有一类知识分子,他们不甘寂寞,他们涉足传道授业,他们涉足启迪民智,通常他们更令人尊敬。因为这并非本行,当然也不可说越俎代庖,毕竟没有人专职干这个。
但是有一些人,他们传 “道”,但是愚民,他们的面皮撕下来,就是一张维护统治阶级少数人的嘴 [……]阅读全文
来美国工作生活已经三年了,早就过了适应期,一些酸甜苦辣也尝到了。经常和同事讨论各个国家的趣事,经常涉及到的话题是教育。事实上这也是个敏感话题,而且似乎是个永久热门的话题。我不想扯得太远,只想表达对于国内学校的课程教育,我的其中几个观点。
英语从高考中撤走?
众所周知,国内的应试教育决定了,如果高考不考,基本上课程就和放松之用的选修课差不多。无数的父辈都教育我们要把英语学好,可是每当我们跟上问一句 “为什么” 的时候,除了 “高考要考” 之外,并没有什么强有力的理由,在耳边来回倒腾的无非是 “要和外国人对话” 啊,“中国要国际化” 啊云云自己都不太相信的鬼话。这就好像很多家长要逼着小孩子学琴一样,[……]阅读全文
最近忙于一些新做的项目,由于新入手,就想着往最佳实践去靠,也寻找一些可以借鉴的模板。其中前端的部分,有很成型的模板可以借鉴。大幅度减少了自己调查和集成的工作量。但是仔细看看,发现这里头的概念太多了,各种开源的库和工具,有人说 “前端玩的是广度” 是有道理的。
这个新项目并不算特别复杂,大致的技术是基于 React+Redux 的,但是大体上集成完毕以后,完成了几个 demo 的代码之后,粗粗地过了一遍,除了传统意义上的 HTML+CSS+JavaScript(遵循 ECMAScript 6 的标准)三大件,居然涉及到了那么多技术,把自己吓了一跳:
[……]阅读全文
我在几年前写过一点对于在家办公的理解,经过最近几年的感受,时不时地需要在家办公,零零散散陆陆续续有了一些新的感受。
首先要明确的是,团队的支持是最重要的。需要一个宽松的团队氛围,能够获得足够的信任,这些都是软基础。如果同事和上司不信任,这件事情是不可能办成的。对于那些把员工视为不可靠、不安全因素的公司,在家办公也是难以实现的。
开发环境。以往我一个不愿意在家办公的重要原因是,我的开发环境都部署在 desktop 上面,从家里无论是通过 Microsoft Remote Desk 还是 NoMachine 之类的连接(我还试过一些别的持有图形界面连接的方式),都不够理想,一顿一顿的,写代码很难受 [……]阅读全文
一个我很喜欢的时评人,老梁(梁宏达)最近被封杀了。原因只是用质疑的语言评价了一些传统意义上的正面光辉形象,比如雷锋、焦裕禄等等。他的观点与官媒背道而驰,于是伟光正的广电总局终于无法忍受,封杀了他。事实上,他还没太敢触及更尖锐的话题,涉及更惊人的人物春秋。你我都明白,他是收着说话的,他是说好听话的,他还是尽量缓和地在歌功颂德中揭露一些丑恶。
[……]阅读全文
大概是去年我被诊断出克罗恩病的,要说以前,大概只是大概知道它是什么,我想对于大多数人来说,这只不过是一个名词而已吧。
去年 9 月份的时候,吃完虾以后,突然感到恶心腹痛,吐了又吐,难以忍受。实在没招了,凌晨的时候,我老婆开车把我送去邻近医院急诊。CT 显示小肠末端处于发炎状态,有严重的狭窄,因此食物下不去。为这事儿住了两天院观察,做了一堆检查,严格禁食,等到炎症缓和一些,就出院了,但是医生告诉我,但愿只是病毒引起,也可能是别的疾病,但必须去完善肠镜。
一个月以后,除了巨额账单,肠镜的结果更令人失望,除了小肠末端狭窄依然存在以外,活检发现一些肠壁的损伤,包括 [……]阅读全文
[Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于 tricky 的方法。我没有为了这个再更新,就让它们去吧。
老规矩,跳过需要付费的题目。题目是越来越不好做,我尽量把自己的思路写下来。
371
51.9%
Easy
368
31.9%
Medium
367
36.9%
Medium
36[……]阅读全文
这是前端框架比较和吐槽的第二篇。
Ember.js
Ember.js 的 extend 的写法很类似于 JQuery 或者是 Backbone.js,创建 Application,然后在它下面创建相应的 Model(Object)、Controller、Router、View 和 Template,这些都是非常类似的。但是它更为先进的地方在于,一些重复的样板代码,比如给 template 注入上下文并渲染,如果命名按照 CoC 的原则正确完成的话,都由框架自动完成,这就省去不少体力活。CoC 还体现在 URL mapping 上面,比如”/books/book_id” 配置在 books.index 的 Router 里,Contro
[……]阅读全文
和一些前端框架打过交道,想起来这也是技术选型中经常面对的内容。我把我的经验、思考、感受,甚至是吐槽,记录在这里,有些零散,并且更多的是个人的感悟。而且由于技术所限,可能部分内容不够深入,或者不甚客观。当然,网上有很多分析对比,视角可能更为全面和系统。如果你在技术选型,或者在考虑要学习使用哪一款 MVC/MVP/MVVM 框架的时候,此文能够给你有价值的信息,就更棒了。如果你觉得我哪些部分说得不正确,或者需要补充,也烦请告知。
需要预先说明的是,这篇文章不是教程,因此如果你对其中某一框架知之甚少,可能需要先去简单学习了解以后才能和我产生共鸣,或者产生反驳的冲动。
以下是第一部分,先谈谈 GWT、An
[……]阅读全文
还记得在 2008 年我做毕业设计的时候,自己心里有一个朦朦胧胧的概念,大概是说,要规范,制度上有标准,流程上有遵循。于是噼里啪啦整了软件工程十项文档,再加上一些辅助性文档就有了下面这个清单。我以为那样的全面会带来更好的评价,但是老师说,“太多了”,我很困惑,难道文档全面、综合,而且完备,这不好么?
在 Amazon 有一个大家都知道和反复自黑的事情。所有 team 都用 wiki 来记录和维护项目、产品有关的事情,但是绝大多数 wiki 的内容都是过时的和不准确的。有几次和其他互联网公司的朋友讨论过这个话题,大家都付诸呵呵一笑,原来大家都差不多。这让我思考,是不是文档这样的东西,和代码不同,它更容易过时,它
[……]阅读全文
忽然想谈谈这个话题,是因为最近开始接触一款游戏《Path of Exile》。它可以说是市面上最接近暗黑 II 的游戏,甚至比暗黑 III 还要接近。作为一个暗黑 II 的十多年的爱好者,它自然引起了我的兴趣。我渐渐发现它有许多吸引我的地方,而其中关于游戏中货币的设计和对通货膨胀的压制都很值得玩味。
不可否认《暗黑破坏神 II》影响了一代人,也影响了无数后续的游戏设计制作人,其中不少独创性的设计都让人印象深刻。比如从 1.10 开始成熟的技能树和技能加成系统,比如地图自动生成系统,比如怪物、武器装备的生成规则(前缀、后缀等等),再比如真实化打击感的设计(打击感即便放到今天依然先进)等等。毫无疑问我从太多的游戏后
[……]阅读全文
最近这一年可谓五味陈杂,各种起伏波动陆陆续续袭来,有时候感到生活艰辛,身心疲惫。就在一周前,也就是 11 月 8 号的时候,我们的孩子 Lucas 诞生了。整个降临过程持续了一昼夜,也折磨了他妈妈 24 个小时。好在最后母子平安健康。古人说,三十而立,而在 30 岁这一年同时也做了爸爸,这对我来说是一个巨大的变化。以往总在说成长,现在要说成熟,有了孩子以后,有许多生活上的琐事需要去做,而教育更是一个无比重要神圣的事情。我相信会多一些欢声笑语,也会多不少困难烦恼。无论如何,这是一个人生旅途上的重要节点,我也开始思考一些过去不曾思考的问题。我想用朴素的文字,记录一点内心的感受。
对 Lucas 的祝愿
[……]阅读全文
是因为最近团队里的数据分析师(data analyst)向我抱怨,为了分析数据,要跑 job,要执行 pipeline,要用 Spark 来算结果,但是期间遇到各种问题,虽然我们一起研究问题的解决方法,但是依然非常耗时而且令人沮丧。这些问题大多并非数据本身的问题,而是工程问题。换言之,我认为数据分析师的价值在于数据思维,他们有我们软件工程师不具备的数据敏感性,他们能从海量的数据中获得有价值的信息——但是如今他们却陷入了因为工具问题而导致才华无法施展的境地,确实令人叹息。而工具的问题,正是应该由软件工程师来解决的。
上班同车的同事 Kai 和我说,现在和几年前不同的是,“全民 dev 化” 了。除了 [……]阅读全文