标签归档:编程

腾讯实习笔试面试小记

四月过了快一半了我却一篇文章都没写,但是我四月要写四篇!包括一篇 Trait 和 Monad。

稍微讲一下最近的事情,起因是有人觉得我蛮不错的推荐我去参加鹅厂的实习。真是谢谢

人家貌似不知道我是专科生,然后我看着每个岗位都写着本科学历心里有点忐忑,本来想不去的,但是想一想自己被刷下来了也是个经验呀。

然后去笔试了。笔试的不怎么样,人家还是 Javascript ObjC Java C++ C 混合起来考的。

很多数学题我都半蒙半做的,比如说最后有一道猴子摘香蕉,以为是自己一直搞不清楚的排列组合题,没仔细看,蒙了个 C_{50}^{2} 结果是这是个 fib 函数……

没想到通过了,让我去面试。

第一个面试官让我选个项目来说,我就说 ika 了,毕竟是料蛮足的。

然后就谈到编译这块去了,编译器,编译优化以及Gradual typing。反正挺顺利的。

然后出了个算法题,两个数集合并,我说了两个方法:

第一个是以一个数集建立二叉查找树,然后第二个数集查找。实际上随后想了想排序然后二分查找就行的,主要是原地。

第二个方法,我想到编程珠玑上面的 bitmap,所以说把数集作为位向量保存,他让我算算大小如何,我算了一下反正蛮大。后来算了一下 int 的话两个数集需要正好 1GB,这方法真臭……问我内存受限的时候怎么办,我就说 hash……嘛,一开始就说 hash 才好吧,半生不熟想要一个时髦的方法来卖弄 Orz
继续阅读

作为初学者给编程初学者的建议

同为编程初学者,特别建议初学者把自己的代码发到 GitHub。

首先不管是不是有人看,代码总是在大庭广众之下的,你也有动力去反复改反复注意如何编码更好,总之就是代码写得丑了不好出门见人的感觉。

其次是版本控制的天然优势,你可以翻自己以前的代码,看到自己是怎么进步的,代码是如何从少变多从简单变复杂的。Commits tioover/cbase GitHub (别学我,我原地踏步)

再次是如果有问题,你可以直接贴地址给别人,有代码高亮也有评论功能,实在不行还能把代码下载下来自己调试。这个就是昨天我遇到了问题,@csslayer 和 雷喵 两位好人大大帮助了我解决这个弱智低级错误:

同时 GitHub 上也有很多项目,不乏同是新手的联系项目和帮助新手的手册等等,你看我随便一搜“中文”二字就出来一堆很赞的教程: Unknwon/the-way-to-go_ZH_CN · GitHub youyudehexie/node123 · GitHub justjavac/free-programming-books-zh_CN · GitHub

然后然后你可以参与开源项目,就算只是提交几个 Issue。

最后,你还可以看个人页面的格子图,一年里哪天荒废了,哪天代码写得很多一目了然,既激励又敦促。

GitHub_grid

荒废了那么多时光……

你们看,那么好的方法,对初学者来说简直就是量身打造啊。

Python 所容易忽视的

当你觉得自己Python 入门了,至少不会因为基础的问题而苦恼的时候,有些问题实际上很多人没有注意到。

另外注意,各种内置method (E.g: __getitem__),以及生成器迭代器的使用都是基础。

这是一篇简洁的拾缺补漏的文章,给出一些常见问题——的文章的链接。

另外,有问题可以去看Stackoverflow

不应如此编程

最近因为学习的关系很少碰代码。

最近看了一下自己写的代码,是一个链表,看到一行(链接),代码的意思是增加数据结构的计数器,我看到这一行的时候却疑神疑鬼了,因为这被包含在初始化一个节点的函数中,但还有其他的一些函数,比如说在特定位置插入,我写的时候或许会忘了一件事:“计数器已经加过了” 而再加一遍。

仔细检查了一下这里应该没出现问题,其他操作都没有动计数器,依赖计数器的函数工作也很正常,然而让我感觉不好的并不是可能出错,而是我看到这行语句以后不确定别的地方没有干不应该干的事情。如果我有底气,看到这行代码心里也就能保证这行代码只出现在这一个函数里面。 继续阅读