问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何规划研究生三年最后成为谷歌软件工程师

发布网友 发布时间:2022-05-18 04:05

我来回答

1个回答

热心网友 时间:2023-08-06 08:16

谷歌员工眼中的 6 个关键点

在我向你提供课程列表前,先读第一二点

全职工作人员——基于你的行业经验和学术背景去选择性的看待这个回答

准大学生——请直接跳到第七点

标记说明:

# 可选的

**必须的

#第一点:让我们回到这个问题本身,也即是如何准备才能让自己成为“优秀”的软件工程师?

是的!这个问题的剩余部分都是可选的。加入谷歌不是登月计划。任何优秀的软件工程师都有好机会成为谷歌工作文化的一部分。问题是你如何定义“优秀”。

**第二点:调整态度

在你给谷歌招聘人员留下深刻印象之前,让我们来看看谷歌的软件工程师这一角色是否是你真正想要的。

软件工程师并不是像普遍观念所说的那样有趣。除了用户界面和用户体验的职位,通常来说,不管你用什么文字编辑器——Eclipse、Vim或者Emacs——你的屏幕将是黑的,无聊和枯燥的。全职的软件工程师,不仅需要有从事复杂算法的能力,还需要足够的包容和耐心来一丝不苟地关注大型程序上的细节。

在谷歌,通常大多数软件工程师的角色主要是处理数学问题。你掌握了多少种语言或者你把Java、C、C++等玩得多溜是无所谓的。

重要的是这个四个目标:

你创造有效算法的能力

你阅读别人写的代码以及发现其中存在任何问题的细心品质

你的学习和实现新技术趋势并且适应需求的好奇心

最后也是最重要的:你创造了什么,如何创造的?

我必须之处要实现以上四个目标并不容易。我们大多数谷歌员工都有一段苦*时间来达到这些目标,但是我们尝试过,所以你也应该去尝试。

每个人都有不同的学习方法。于我,我每天读一篇我在Quora链接上找到的研究论文(可能和也可能不和计算机科学有关),一篇谷歌的研究文章(内部记录)。

一旦你加入谷歌,将可以访问所有的代码库,数据库,论坛,研究论文和一些能给你学习时提供巨大帮助而你却无法在维基百科上找到的项目。但当你在为加入谷歌而准备路上时,有几样事情在学习的过程中很常见。在第五点中,你将会更多地了解到——怎样来实现这四个目标——但在这之前有些前提还是需要看看的。所以,我们进入下一点吧。也即是:

#第三点: 2014年技术发展指南——来自谷歌

作为一个成功的软件工程师,有着扎实的计算机基础是很重要的。对于大学生,通过自我把握节奏地亲身实践学习,来专业性地或者非专业性地培养他们的技术能力,跟随这份谷歌指南是一条建议路径。

请自己权衡使用这份指南

这份指南之外可能也有你想学或者想做的其他东西——尽管去做吧!

**第四点:对专业性学习的建议

计算机科学入门课程

注:计算机科学的入门课能提供编程的一些指导。

在线资源:

Udacity – intro to CS course,
Coursera – Computer Science 101

*译者注:这些在线资源大都是英文授课,因此没有翻译课程名(下同),另外作为程序员英语必须得好啊,可以参看伯乐在线老码农写的《老码农教你学英语》一文。

至少用一种面向对象的编程语言写代码:C++,Java,或者Python

初学者在线资源:

Coursera – Learn to Program: The Fundamentals,

MIT Intro to Programming in Java,

Google’s Python Class,

Coursera – Introction to Python,

Python Open Source E-BookIntermediate Online Resources:

Udacity’s Design of Computer Programs,

Coursera – Learn to Program: Crafting Quality Code,

Coursera – Programming Languages,

Brown University – Introction to Programming Languages

学习其他编程语言

注:可以将这些语言加到你的仓库里:Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.

在线资源:w3school.com – HTML教程*, Learn to code

测试你的代码

注:学会如何跟踪bugs,创建测试,并且破坏你的软件

在线资源: Udacity – Software Testing Methods, Udacity – Software Debugging

培养逻辑思维和积累离散数学知识

在线资源:

MIT Mathematics for Computer Science,
Coursera – Introction to Logic,
Coursera – Linear and Discrete Optimization,
Coursera – Probabilistic Graphical Models,
Coursera – Game Theory.

译者注:coursera课程大多都有中文字幕,对于学习语言门槛会降低,不过仍推荐学习原版课程。

培养算法和数据结构的深刻理解能力

注:了解一些基本数据类型(栈、队列和包),排序算法(快排、合并排序、堆排序)和数据结构(二分查找、红黑树、哈希表),大O表示法等

在线资源:

MIT Introction to Algorithms,
Coursera – Introction to Algorithms Part 1 & Part 2,
Wikipedia – List of Algorithms,
Wikipedia – List of Data Structures,
Book: The Algorithm Design Manual

培养对操作系统的深刻理解能力

在线资源:UC Berkeley Computer Science 162*

*译者注:这个链接是*上的,国内有很多电驴的资源,亲测可用(如果找不到可用链接,译者可提供)

学习人工智能的知识

在线资源:Stanford University – Introction to Robotics, Natural Language Processing, Machine Learning*

*译者注:斯坦福Andrew Ng的这门机器学习课程强烈推荐,译者也有大量该课程资源。

学习如何构造编译器

在线资源:Coursera – Compilers*

*译者注:这门课程也是相当实用,最好跟着可能动手完成课程的编译器项目。

学习密码学

在线资源:Coursera – Cryptography, Udacity – Applied Cryptography

学习并行编程

在线资源:Coursera – Heterogeneous Parallel Programming

**第五点:对非专业性学习建议

参与课堂之外的项目

注:创建和维护一个网站,构建你自己的服务器,或者做一个机器人。

在线资源:Apache List of Projects, Google Summer of Code,Google Developer Group

参与大系统(代码库)中的小代码片段,阅读和理解已有的代码,查文档并且跟踪调试。

注:用GitHub来阅读别人的代码或者去贡献一个项目是一种很好的方式。

在线资源:Github, Kiln

和其他程序员一起参与项目

注:这将会帮你提高在团队工作的能力,也使你能够向他人学习。

锻炼你的算法知识和编程能力

注:通过像CodeJam或者ACM ICPC这些编程竞赛来锻炼你的算法知识

在线资源: CodeJam, ACM ICPC*

*译者注:国内有很多OJ也可以起到这个作用,比如POJ、九度等

成为一个助教

注:帮助教其他学生将会有助于增加你在这个学科的知识

软件工程方面的实习经历

注:确保你在实习招聘期来临前申请了实习工作。在印度和美国,实习期在暑假,5至9月份,而申请通道通常提前几个月就打开了。

在线资源:google.com/jobs

#第六点:谷歌推荐/赞助的项目和团队

在你兴趣领域内,你可能选择订阅的课程很少。这些课程和项目是非常好的学习地方,但他们不会增加或减少你进谷歌的机会——他们不等于实习。(更多信息来自 Robert Love)

谷歌课程——Making Sense of Data

这门自我把握节奏的在线课程是为任何想学习更多关于结构、可视化、操作数据的人准备的。

2. 谷歌课程——BOLD Discovery

这个为期两天的互动会议将给一二年级的大学生提供一些关于谷歌文化和这家公司职业前景的介绍。

3. 谷歌编程之夏

一个全球在线项目,提供给上完中学且年龄在18以上学生开发者津贴,让他们为各种各样的开源软件项目写代码。

4. 谷歌奖学金*

这个项目提供学生在暑假期间为互联网工作的机会和在公共利益组织上提出的技术*。

5. 谷歌学生退伍军人峰会

谷歌学生退伍军人峰会包括为老兵适应工作环境而准备的职业培养课程。也可以参看:Ellen Spertus 在 How can I effectively use my last two years of college to prepare for a great Software Engineering job at Google/FB or a startup? 这个问题上的观点。*

*译者注:这是Quora上Ellen Spertus对另一个问题(我是怎样高效地利用大学最后两年来为谷歌/*或者初创企业的一个很好的软件工程师职位做准备的)的回答。

**第七点:对数学课程的建议

(对准大学生而言)

个人观点:任何忽视这些学科企图将使你进入完全以错误方式学习的平庸程序员的范畴。之前准备的越充分就越使得写代码越享受。这些是软件工程的几个前提,对软件工程你需要去理解算法的精髓。如果软件工程师能够回忆起学校里学的简单知识,大多数他们犯的错误本可以避免的。

在你深入学习数学或者计算机科学中,你将意识到你“大学本科时学过的数据结构”和“研究生时学过的机器学习”的重要性。因此,要想设计复杂的算法,一下是你必须精通的课程清单。对于大学研究生,如果你忽视了这些学科,我强烈建议你应该你能做到的最好的方式去复习它们。

在你学习完学校课本上的介绍性大纲之后,练习下面的课程来加深理解吧。大多数大学生(甚至在职员工)低估了这些课程然后成为了另一类平庸的程序员;

线性代数

1. Linear Algebra | Mathematics | MIT OpenCourseWare (我推荐的)
2. Coding the Matrix: Linear Algebra Through Computer Science Application (同事推荐的)

学习这些会帮你理解后续的回归模型——机器学习基本的一步。任何学校、大学、研究室或者机构都不会教你这些线性代数课程。自己去学吧。

微积分

1. Calculus 1 – Ohio State University
2. Pre-Calculus Courses – Universitat Autonoma de Barcelona
3. Calculus for Beginners and Artists – MIT

统计&概率

注:当你上大学和读研究生时,大纲就会变成机器学习的算法了。对于大多数大学生,机器学习课程的头三个月里数学使他们苦不堪言,而当他们好不容易赶上进度了,大纲又推进到更加机器学习复杂的领域,比如深度学习,神经网络和神经网络流处理。

#准大学生:谷歌推荐/赞助的项目

谷歌的Code-in项目(GCI)

这个比赛为年龄在13至17岁的准大学生介绍了各种各样使得开源软件开发成为可能的贡献。

RISE奖金

谷歌RISE是一种对合伙人的奖励,它奖励旨在促进和支援为全世界的K12*小学生和中学生的STEM*以及计算机教育举措的项目。

*K12,从幼儿园到12年级

*STEM,Science,Technology,Engineering,Math,科学、技术、工程、数学

前沿计算机科学研究院(LEAD-CSI)

这个项目使得来自不同社区的中学生可以接触到STEM领域的大学和职业。

用代码创造

编程是种新能力-它承载着创造、创新和文明改造世界的潜能。这个举措旨在激励数以百万计的女孩体验代码的魔力。

高中座谈会

这个为期一天的项目旨在为优秀的高年级中学生在上大学前提供有价值的商业技巧。

先驱者

先驱者项目是一个全球性的网络,这里聚集着领导者、倡导者和计算机教育大使,大使们负责让全球的青年和教育工作者通过计算机科学被联系和激励。

谷歌科技博览会

谷歌科技博览会是对13到18岁青少年开放的全球性竞赛。学生在线提交项目并得到赢得大奖的机会。

计算机科学暑期研究所(CSSI)

CSSI是一个为期三周的暑期项目,针对即将进入大学且对学习计算机科学感兴趣的新生而设。

Google+露营项目

30天的DIY和制作活动。Maker Camp是一个在Google+上对所有人开放的免费虚拟暑期露营活动

互联教室

在Google+ 上和老师、教育组织协作来为K12学生提供经验性的学习机会。

参考:

http://blog.jobbole.com/79736/

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 如何才能成为一名软件工程师,请前辈给个五年计划,先谢过了~~~ 给男友锦旗内容怎么写 七夕节给男友的小惊喜 DIY的中文 橙子多少钱一箱? DIY的中文意思是什么? 四分之一橙多久上链条 “DIY”是什么意思?(用中文解释) DIy翻译成中文 四分之一橙是300还是600 秋天适合吃什么水果最好 秋天感冒不能吃什么水果 秋天吃什么水果和什么水果不能一起吃? 《平安夜》的由来 分子和原子的主要区别 制造业的FATP全称是什么 富士施乐粤语客服的工作压力大吗? fatp在工厂里代表什么意思? 装饰装修工程防静电地板需要做隐蔽吗? 立邦漆防静电吗? 急啊。。想成为一名成功的软件工程师!现在大一的我应该怎样下手去学? 一个路由器上的电脑如何共享硬盘? PC互联网,移动互联网,客厅互联网分别是指什么? 第一代pc互联网的操作系统是 互联网加首先是pc互联是正确还是错误的 PC与PC互联 生命活动的基本特征有___,___和___。 生命活动的基本特征有哪些? 生命的特征思修生命的什么性? 人体的基本生理特征有哪些? 生命活动的最基本特征是 在合肥拍写真的话大概需要多少钱啊? 现在合肥这边的写真的价格一般是多少啊? 在合肥工作室拍套写真大致价位是多少? 在合肥拍情侣写真在什么价位? 大概什么价格 在合肥拍套写真,价位一般是多少?谁家的性价比高? 谁知道拍个写真多少钱 好点的 在合肥! 合肥哪家的情侣写真拍的好?要实惠一点的啊! 合肥拍一套婚纱照需要多少钱 合肥拍个人写真的影楼?