作者:WinKaR
链接:https://www.zhihu.com/question/34775492/answer/59814073
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
链接:https://www.zhihu.com/question/34775492/answer/59814073
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
同菜鸡, 同没什么天赋. 现在是大三暑假, 正在微软实习. 正好符合你的两年企划.
大一时候的基础比你稍微好一点, 虽然在做OI的时候是只垫底的菜鸡, 但起码有基础.
讲述一下我摸进微软的经验. 以供参考.
笔试
算法和数据结构向的东西在笔试当中是比较重要的, 这个东西不是能一蹴而就的, 需要多刷题才能Hold住.
建议在POJ之类的网站上找些简单题做一做,练练手. 很多人都列过分类的题目单, 可以照着去做.
可以不会裸写快排, 可以不会手操红黑树, 但基本的树,队列,栈之类的数据结构, 和各种贪心排序动规搜索最短路生成树的算法要滚瓜烂熟, 清楚其原理,应用场景, 复杂度.
面试
你可以看一看编程之美, 就知道微软的面试题都是些什么了.
然而题目会不会做并不是重点, 我面试的时候题目做得磕磕绊绊. 事实上面试的时候重要的是: 在面试官的引导下解决问题的能力. 平时着重培养这个方面(至于怎么培养....只能说平时多思考吧)
另外, 最好能拓宽一下知识面, 不要只关注一些很应用的东西. 一些原理性的东西大可以去学一下看一看, 有助于形成一个完整的知识体系, 知其然并且知其所以然. 这方面跟进大学的课程就好. 除此之外还需要了解一些编程模型啦范式啦, 可以看一看七周七语言,七周七并发模型, 设计模式之类的东西, 这些东西在学校里做小项目很少涉及.
小TIPS: 面试的时候可能需要手写代码, 我相信没人喜欢裸写C/C++的感觉, 最好学一门表现能力强一些的语言, 比如Python, C#.
选择Python C# 而非Ruby Java, 前者是因为虽然Ruby表现能力更强, 但对没学过的人来说不易理解; 后者是因为MS用C#, 并且C#的表现能力确实比Java强.
汇编这个东西学一点基础语法, 然后懂一点堆栈结构就好, 不需要死扣深究. Java是门值得一学的语言, 可以结合着设计模式看一看(不过一开始多半看不大明白).
大一时候的基础比你稍微好一点, 虽然在做OI的时候是只垫底的菜鸡, 但起码有基础.
讲述一下我摸进微软的经验. 以供参考.
笔试
算法和数据结构向的东西在笔试当中是比较重要的, 这个东西不是能一蹴而就的, 需要多刷题才能Hold住.
建议在POJ之类的网站上找些简单题做一做,练练手. 很多人都列过分类的题目单, 可以照着去做.
可以不会裸写快排, 可以不会手操红黑树, 但基本的树,队列,栈之类的数据结构, 和各种贪心排序动规搜索最短路生成树的算法要滚瓜烂熟, 清楚其原理,应用场景, 复杂度.
面试
你可以看一看编程之美, 就知道微软的面试题都是些什么了.
然而题目会不会做并不是重点, 我面试的时候题目做得磕磕绊绊. 事实上面试的时候重要的是: 在面试官的引导下解决问题的能力. 平时着重培养这个方面(至于怎么培养....只能说平时多思考吧)
另外, 最好能拓宽一下知识面, 不要只关注一些很应用的东西. 一些原理性的东西大可以去学一下看一看, 有助于形成一个完整的知识体系, 知其然并且知其所以然. 这方面跟进大学的课程就好. 除此之外还需要了解一些编程模型啦范式啦, 可以看一看七周七语言,七周七并发模型, 设计模式之类的东西, 这些东西在学校里做小项目很少涉及.
小TIPS: 面试的时候可能需要手写代码, 我相信没人喜欢裸写C/C++的感觉, 最好学一门表现能力强一些的语言, 比如Python, C#.
选择Python C# 而非Ruby Java, 前者是因为虽然Ruby表现能力更强, 但对没学过的人来说不易理解; 后者是因为MS用C#, 并且C#的表现能力确实比Java强.
汇编这个东西学一点基础语法, 然后懂一点堆栈结构就好, 不需要死扣深究. Java是门值得一学的语言, 可以结合着设计模式看一看(不过一开始多半看不大明白).