h**6 发帖数: 4160 | 1 写在前面:
昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题,
在此向他表达最诚挚的谢意。
历史回顾:
1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也
不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧
张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。
这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。
2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类,
Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
实整本书只讲了怎样在对话框上添加几个按钮。由于对C的先入为主,我也一直认为C++
就是可以随处定义变量并有升级版struct的C。囫囵吞枣看下去的诸多概念也没有时间
消化运用。
这期间写了一些游戏的存档修改器和数据编辑器,写这类东西主要是寻找地址麻烦,找
到地址之后就剩一些累傻小子的活了。
至此为止,我所谓丰富的编程经验仅仅是一些依赖编译环境的编码和调试经验,虽然学
了很多数据结构和算法,但从来没有一次主动的运用到程序之中。
找工准备:
1.最初,我完全没有准备就开始投简历,第一个电话面试过程也就令人啼笑皆非。面试
官让我写斐波那契数列,我写了个递归函数,就一句话,连递归中止条件都没有,必然
会导致堆栈溢出。
int f(int n){return f(n-1)+f(n-2);}
放下电话很久之后,我才发现这个错误,跟面试官发信去解释并附上正确代码,结果
只收到了一封拒信。
2.后来投Facebook,被要求在Linux做一个BUFFET puzzle。
在虚拟机上安装了Ubuntu系统,开始做Hoppity Hop!熟悉环境。接着做Liar, Liar试试
手,却没有通过,盯着题目想了半天,突然省悟到需要用二分法来查找名字,这大概是
我第一次主动在程序中使用算法吧。
接下来的facebull却花了我一个星期。忙着去图书馆借书,学习行脚商人的解法。并根
据点和边的相对数目分级优化、剪枝,甚至还写了一棵二叉树用于表示稀疏数组。一周
后终于通过机器人测试,我感觉自己对于数据结构和算法的理解有了显著提高。
3.此后,终于意识到没有系统学习是不行的。我花了大约两周把CLRS走马观花过了一遍
,并把Topcoder的教程看了一大半,做了其中简单的习题,顺带学习了STL的用法。
Topcoder的教程在这里:
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index
说个小插曲,以前我一直习惯用VC6的,可是自从学习STL之后,忍受不了VC6的各种问
题,如不能使用long long, min, max, STL容器叠加时会产生莫名其妙的警告,于是我
毅然转向了VS2008。
有了一定的算法基础之后,我一期不落的参加Topcoder训练,参加今年的google
codejam比赛,并做了前两年的题目,闲暇时还来到版上来做别的版友所遇上的面试题
。这其中,有些是不必要的、过于偏重数学的题目,但我完全凭借着一股激情坚持下来
了。
到后来,我已经能做出每期Topcoder SRM中除了Div1 1000外的所有题目,版上的面试
算法题,也能做到90%以上,于是可以去onsite试试手气了。
4.google面试是失败的,我自以为已经复习的很好了,结果却把求图最短路径的Floyd-
Warshall算法的内外层循环给弄反了。面试官没有当面指出,却拍照回家研究。我直到
两个多星期以后,在SRM中写出同样的算法,却怎么也调不通,这才恍然大悟,原来我
死得不冤。
5.microsoft的面试题就简单得多,但即使这样,我也没有做到完全一次写对。被当场
抓住一个BUG,某变量在循环中没有清零,好在最终拿到了offer,无伤大局。 |
A*******1 发帖数: 985 | |
n*******9 发帖数: 1017 | 3 how long do you take for this period?
I am doing this too.
3.此后,终于意识到没有系统学习是不行的。我花了大约两周把CLRS走马观花过了一遍
,并把Topcoder的教程看了一大半,做了其中简单的习题,顺带学习了STL的用法。
Topcoder的教程在这里:
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index
说个小插曲,以前我一直习惯用VC6的,可是自从学习STL之后,忍受不了VC6的各种问
题,如不能使用long long, min, max, STL容器叠加时会产生莫名其妙的警告,于是我
毅然转向了VS2008。
有了一定的算法基础之后,我一期不落的参加Topcoder训练,参加今年的google
codejam比赛,并做了前两年的题目,闲暇时还来到版上来做别的版友所遇上的面试题
。这其中,有些是不必要的、过于偏重数学的题目,但我完全凭借着一股激情坚持下来
了。
到后来,我已经能做出每期Topcoder SRM中除了Div1 1000外的所有题目,版上的面试
算法题,也能做到90%以上,于是可以去onsite试试手气了。 |
d**e 发帖数: 6098 | 4 。。。。。。 我就按了一下大D,发了封信,哪来折腾呢
你真的很牛,基本上我看见的所有题目你都做出来,特别是有些数学的东西,看得我头
晕晕眼花花.
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
h**6 发帖数: 4160 | 5 前面的很多都是废话,只有第三点才与准备面试相关。
当时我完全放弃论文,全职投入准备面试,大约花了三个月的时间。此后只需要每个星
期写两个小时程序,维持水平就可以了。 |
g*******y 发帖数: 1930 | 6 呵呵,以你的资质,要去fb啊,来google之类的,其实是很容易的。
这么短时间内从没有什么基础,能练到这个水平,已经很impressive了。
我也是半路转行的,看着你写的本科自学c++,什么windows控件之类的,看着感觉很熟
悉,我当年也是这样,呵呵,只
学过潭浩强c,后来买了几本书学vc胡乱搞了几个弱智的程序。
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
n*******9 发帖数: 1017 | 7 我当年也这样的, 现在想起来浪费了好多时间, 当时应该多搞搞算法呀
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
n*******9 发帖数: 1017 | 8 Han6, are you PHD or MS?
Major?
Microsoft is my dream for 10 years. 10 年以前开始就一心想去微软,那时候还
不知道 A,F, 没有想过是美国的。
不过目前在朝这方向努力 . |
h**6 发帖数: 4160 | 9 我是PhD,可惜没有出多少paper,你要想来微软的话,自然无限欢迎。
【在 n*******9 的大作中提到】 : Han6, are you PHD or MS? : Major? : Microsoft is my dream for 10 years. 10 年以前开始就一心想去微软,那时候还 : 不知道 A,F, 没有想过是美国的。 : 不过目前在朝这方向努力 .
|
e****a 发帖数: 449 | 10 en 赞一个 不过以楼主的水平 在微软确实屈才了 可以做一做再跳吧 :) |
|
|
a****n 发帖数: 1887 | 11 Microsoft 曾经也很想去, 现在没兴趣了
【在 n*******9 的大作中提到】 : Han6, are you PHD or MS? : Major? : Microsoft is my dream for 10 years. 10 年以前开始就一心想去微软,那时候还 : 不知道 A,F, 没有想过是美国的。 : 不过目前在朝这方向努力 .
|
y*c 发帖数: 904 | 12 这样的google都不要?google要得都是什么人 |
s*********t 发帖数: 1663 | 13 狂赞
牛人
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
A*********r 发帖数: 564 | 14 真不容易。。
相比起来,我一直本专业,但真不记得有什么编程经历了,你大学编的那些程序我居然
都没写过的样子,惭愧,那时候只知道对付老师布置的作业去了。。
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
i**********e 发帖数: 1145 | 15 想问问楼主关于你写的黑白棋程序是怎样的?
有人工智能吗?
利用什么搜索算法来实现人工智能?
一些常见面试题的答案与总结 -
http://www.ihas1337code.com |
d**f 发帖数: 264 | 16 在windows下写test code,我推荐Dev-C++,其实就是Linux下的GCC,很方便.
Win7运行也没有问题.
http://www.bloodshed.net/devcpp.html
VS就是杀鸡用牛刀. |
d**f 发帖数: 264 | 17 我到现在也没有明白,大概15年前,为什么我们大学一年级直接学习C,像我这种,高中的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern. |
S*********r 发帖数: 5693 | 18 google现在人招得太多了,招人的也有很多烂人。我身边也有牛人没拿到offer,烂人
不知道怎么混进去了。可能大公司都必然会走这条路吧,呵呵。
【在 y*c 的大作中提到】 : 这样的google都不要?google要得都是什么人
|
w*****g 发帖数: 1415 | 19 软件工程不讲design pattern也很正常。
的时候,就几乎
没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还
有我记得大学
四年级学软件工程的时候,老师竟然不讲Design Pattern.
【在 d**f 的大作中提到】 : 我到现在也没有明白,大概15年前,为什么我们大学一年级直接学习C,像我这种,高中的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
G******i 发帖数: 5226 | 20 15年前的CS还算新鲜事物
和现在的CS基本上不属同一概念...
学C的还算不错了
俺学的是Pascal...
的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎
都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
【在 d**f 的大作中提到】 : 我到现在也没有明白,大概15年前,为什么我们大学一年级直接学习C,像我这种,高中的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
|
|
y*********e 发帖数: 518 | 21 赞一下楼主的经历。
留意到楼主写的这些经历:“写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。
”,“这期间写了一些游戏的存档修改器和数据编辑器”。可以看出楼主是编程的真正爱好
者。保持这样的激情下去,楼主会取得成功的。
减少bug的话,唯有多写代码,多思考。写多了然后回头思考可否改进。
多多写代码,多多思考,多多看优秀的源代码(比如.NET类库源码,VC++ STL源码,
.NET CLI源码(有些.NET的函数是extern的,就需要跳到CLI看C++源码了),泄露
的Windows源码,等等),几年积累下来就可以啦。
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
d**e 发帖数: 6098 | 22 我本科的学校,只教数据结构,根本不教算法,研究生也不教。
的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎
都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
【在 d**f 的大作中提到】 : 我到现在也没有明白,大概15年前,为什么我们大学一年级直接学习C,像我这种,高中的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
M**u 发帖数: 10158 | 23 你这不错了
我到现在C就知道点基础语法,完全不会C编程。。。
【在 G******i 的大作中提到】 : 15年前的CS还算新鲜事物 : 和现在的CS基本上不属同一概念... : 学C的还算不错了 : 俺学的是Pascal... : : 的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎 : 都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
y*********e 发帖数: 518 | 24 握爪~我也是大学才接触到C,当时大学教程只讲述数据结构,算法都很少,甚至都没
有Design Pattern。
在windows下写test code,我之前是用notepad2 + cl.exe,现在则是用 VIM
+ cl.exe。
的时候,就几
乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++.
还有我记得
大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
【在 d**f 的大作中提到】 : 我到现在也没有明白,大概15年前,为什么我们大学一年级直接学习C,像我这种,高中的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
p********7 发帖数: 549 | 25 我是到准备面试才成为编程爱好者的,以前一直对编程不是特别还好。后来发现算法这
些东西还很有意思的。 |
z***e 发帖数: 5393 | 26 这些都是过去时了.
工作之后就可以开始想想到底怎么能写出自己的作品(赚钱),而不是去做些添砖加瓦的
工作. |
z***e 发帖数: 5393 | 27 ...windows源码实在不能用“优秀”来描述...
顺便说,有对读windows源码感兴趣的要找工作的给我发email吧,你一定会很满足...
序。
正爱好
【在 y*********e 的大作中提到】 : 赞一下楼主的经历。 : 留意到楼主写的这些经历:“写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : ”,“这期间写了一些游戏的存档修改器和数据编辑器”。可以看出楼主是编程的真正爱好 : 者。保持这样的激情下去,楼主会取得成功的。 : 减少bug的话,唯有多写代码,多思考。写多了然后回头思考可否改进。 : 多多写代码,多多思考,多多看优秀的源代码(比如.NET类库源码,VC++ STL源码, : .NET CLI源码(有些.NET的函数是extern的,就需要跳到CLI看C++源码了),泄露 : 的Windows源码,等等),几年积累下来就可以啦。 : : 试。
|
h**k 发帖数: 3368 | 28 数据结构和算法是一回事啊,至少我们本科学的数据结构里链表,二叉树,排序等都有
了,复杂度分析也讲了。
【在 y*********e 的大作中提到】 : 握爪~我也是大学才接触到C,当时大学教程只讲述数据结构,算法都很少,甚至都没 : 有Design Pattern。 : 在windows下写test code,我之前是用notepad2 + cl.exe,现在则是用 VIM : + cl.exe。 : : 的时候,就几 : 乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. : 还有我记得 : 大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
y*********e 发帖数: 518 | 29 学数据结构,是肯定有讲解分析算法复杂度的。我指的是专门的算法课,讲述二分法,
动态规划,贪心这些,课本就是CLRS。^^
【在 h**k 的大作中提到】 : 数据结构和算法是一回事啊,至少我们本科学的数据结构里链表,二叉树,排序等都有 : 了,复杂度分析也讲了。
|
G******i 发帖数: 5226 | 30 you can access windows' source code and distribute them legally?
【在 z***e 的大作中提到】 : ...windows源码实在不能用“优秀”来描述... : 顺便说,有对读windows源码感兴趣的要找工作的给我发email吧,你一定会很满足... : : 序。 : 正爱好
|
|
|
y*********e 发帖数: 518 | 31 泄漏的win2k源码大多非常优秀。写的函数一般都能fit进一页屏幕,模块化非常好。
变量命名和函数命名都非常self explaining。在关键地方做的注释都非常适合。
代码的可读性非常高。实在无法理解你所说的“windows源码实在不能用“优秀”来描
述。
不过源码中最有意思的是注释了,出现次数最多的单词是moron,idiot和
hacking。
有几个注释印象中很深刻:
之一:
/* We have to do this because Exchange is a moron */
之二:
/*
*******************************************************
****** IF YOU CHANGE SPACE TO TAB I WILL KILL YOU *****
****************** I WILL KILL YOU!!!!!!! *************
*******************************************************
*/
有意思吧?开发windows的码工一般都很自负,写的注释也很粗口,我喜欢^^
里面有很多深邃难懂的代码都标记了hacking,hacking,hacking。
【在 z***e 的大作中提到】 : ...windows源码实在不能用“优秀”来描述... : 顺便说,有对读windows源码感兴趣的要找工作的给我发email吧,你一定会很满足... : : 序。 : 正爱好
|
T********y 发帖数: 24 | 32 看得我很感动,感觉楼主是真正对编程有热爱,而且努力不放弃的那种。
BTW:
facebull是一道很难的题目,我也是想了好久才想到有一个DP的解法,问题做不出来的
时候也很纠结。深深地祝福楼主。
试。
【在 h**6 的大作中提到】 : 写在前面: : 昨天有私事麻烦done版务,来回折腾好几次。done版务始终尽心尽职,最终解决问题, : 在此向他表达最诚挚的谢意。 : 历史回顾: : 1.我从上大学才开始接触编程,最早学习的是谭浩强的《C语言程序设计》。当时啥也 : 不懂,只知道用最直接的方法实现问题,写个素数程序都可以执行几分钟。加之机时紧 : 张,常常在白纸上写好代码,上机调试,出错,再在草稿纸上修改,然后继续上机调试。 : 这期间写了算24、黑白棋、俄罗斯方块、模拟选课系统几个程序。 : 2.后来开始自学C++,买了张盗版VC,还经常去书店看白书。看的书主要分为两类, : Windows控件和C++语法。现在看起来觉得好笑,可惜当时被宏大空泛的书名所迷惑,其
|
s*******t 发帖数: 248 | 33 那你debug用啥呢?
【在 y*********e 的大作中提到】 : 握爪~我也是大学才接触到C,当时大学教程只讲述数据结构,算法都很少,甚至都没 : 有Design Pattern。 : 在windows下写test code,我之前是用notepad2 + cl.exe,现在则是用 VIM : + cl.exe。 : : 的时候,就几 : 乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎都是VC++. : 还有我记得 : 大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|
y*********e 发帖数: 518 | 34 用VIM或者notepad2写的都是小程序,一般就一个file的那种。若是有debug,就读代码
分析。顶多加上printf打印一些东西做辅助。这样锻炼下来能提高debug技巧,至少对面
试很有帮助。
当然工作的时候还是用IDE里面的debug step into/step out功能,方便。
【在 s*******t 的大作中提到】 : 那你debug用啥呢?
|
d*********s 发帖数: 777 | |
A*X 发帖数: 908 | 36 20年前俺还学BASIC呢,还有LOGO,好像叫海龟画图,不过当时一水的Mac啊
【在 G******i 的大作中提到】 : 15年前的CS还算新鲜事物 : 和现在的CS基本上不属同一概念... : 学C的还算不错了 : 俺学的是Pascal... : : 的时候,就几乎没有见过计算机.然后是很长一段时间VC++跟C++分不清,市面的教程几乎 : 都是VC++. 还有我记得大学四年级学软件工程的时候,老师竟然不讲Design Pattern.
|