查看原文
其他

零基础程序员如何花 8 个月时间获得特斯拉实习机会?

Michaël Trazzi CSDN 2019-03-31


作者 | Michaël Trazzi
译者 | 弯月
责编 | 郭芮
出品 | CSDN(ID:CSDNnews)

以下为译文:

在过去3个月里,我的一位好友一直在特斯拉实习。这日,我问他:“你现在跟埃隆·马斯克(特斯拉CEO)应该混得很熟了吧?”


“说了你都不信。有一阵子,我的桌子距离埃隆·马斯克不到五米远。”


“你就吹吧。”我说道。


“真的。第一天,当他们告诉这是你的办公桌时,我都吓傻了。我感觉埃隆·马斯克随时可以看到我的代码。所以,我赶快设法换了办公桌。”



“兄弟,这也太疯狂了吧。你还剩几个月?你从九月份开始实习的吧?”


“嗯,我还有3个月。”


“但是,你是如何获得在美国工作的许可的呢?最初你拿的不是旅游签证吗?”


“说来话长。我历经艰辛……”


“跟我说说。这一切究竟是怎么回事。”


朋友笑道:“真的吗?一切?”


后来,他给我讲述了整个故事。



学习Starfleet课程



“2018年1月,我乘坐飞机到硅谷42号。我爸给我的钱只够付Airbnb的房租。在最初的几个月里,我所有的钱都给了Airbnb,我穷得连饭都吃不上。有时候,一整天我才吃半个炸玉米饼,有时吃一点意大利面。就这么熬着。”


“天啊,兄弟你好惨。不过,这与Airbnb的联合创始人当初的遭遇也差不多,他甚至连房租钱都没有。” 我说。


“是啊,那段时间非常艰难。我都饿得不行了,快坚持不下去了。我去找了Starfleet课程(https://www.42.us.org/program/42-starfleet-academy-1-year-software-engineering-program/)的主管,问他:‘我可以参加你们的课程吗?’但是他拒绝了。因为我只有6个月的旅游签证,但Starfleet课程需要一年的时间。我锲而不舍地一再央求,最后他终于接受了。”


“你绝对是一个疯子。老兄,你永不放弃。你简直疯了。”


“如果你饥寒交迫,就快要破产的时候,你也能豁出去。我从法国大老远来到这里,我就必须参加这个Starfleet课程。我极其渴望在硅谷工作。”


“你说的对。”


“后来,在我加入Starfleet课程几个月后,我的一位朋友问我想不想要一间宿舍。他们在接纳我之前看过我做的项目,我觉得他们应该也是发现我是一个非常认真的人所以才同意我搬进来的。自从搬进宿舍后,我终于有钱吃饭了,而且我可以把所有时间都花在学习编程上了。”


“从那以后,我们的工作量大的惊人。我记得当时我需要同时兼顾corewar(一个通常需要一个月才完成的VM项目)、42sh(最难的shell项目之一)和PHP piscine(两周激烈的PHP挑战)。我们经常熬夜做项目,还习惯于凌晨5点出去买吃的。那段时光真是太疯狂了。”


“你不知道我是多么嫉妒你啊。”我说。


“是啊,那段时间虽然艰难,但是很有意思。有时工作量大到无法承受,比如,有一次我们同时做6个项目。我记得我们必须编写ft_p (客户端和服务器通过TCP / IP网络传输文件)、Hypertube(用于视频流的网络应用,通常需要2个月才能实现)、Walking Marvin(一个AI项目),还有一个Zappy(通过TCP / IP网络进行多人游戏的服务器、图形界面和AI客户端。它是UNIX分支的最后一个项目)。”


“客观地说这似乎不太可能吧?” 我由衷地问道。


“并非不可能,但确实很难。我想到的解决方案是着重关注Zappy项目。此外还有个主要问题是最初的小组成员中,最终留下来的只有我和另一位波兰的朋友。”


“我觉得换作是我也会这么做。但是,Zappy是UNIX项目的最后一个吧?如果之前的项目没有做完的话,一定非常艰难。”


项目截图,从左到右分别是:Hypertube(网络分支结束)、21sh(shell / Unix)、ft_p / IRC(Unix / DevOps)、Walking Marvin(AI)以及最右边的Zappy项目(最终验证了!)


“有点儿。对于Zappy,我们必须编写图形界面、服务器和客户端,最糟糕的部分是那些离开硅谷的原始团队成员留下来的‘死代码’。值得一提的是,当时我们只有两周半的时间交付这个项目。所以,我对自己说:‘管他的呢,来吧!’我去和Starfleet课程的其他人交谈,问他们是否可以和我们合作。”


“你很了不起啊。你告诉别人工作的内容以及原因。你取得了项目中每个人的信任,最终领导了整个团队。”我微笑着对他说。


他笑了:“也许吧。我找到了一个正在编写Bomberman(C ++视频游戏项目)的人,问他是否愿意帮忙编写我们的图形界面。他好像不太情愿地说:‘我不想让Bomberman的队员失望。’我很坚持,我告诉他Zappy中有很多很酷的新东西需要学习,而且硅谷42号中没有人完成过这项重任,我们会成为第一个。他说他需要点时间考虑一下,我只好告诉他我回头再找他,看看他是否改变了注意。结果,两个小时后我再找他,他就加入了我们小组。”


“你这有点咄咄逼人啊,老兄。你永不言败啊!”


最终的图形界面,由Bomberman的那个人实现


他笑了:“也许吧。总而言之,在截止日期前两周,我们有一些图形界面的代码,有完成了一半的服务器代码,和一个可以运行的客户端。我波兰的朋友设法将这些不同的‘死代码’连接起来,然后让服务器(最难的组件)工作。可是就在那时,她开始对整件事感到有些沮丧,并决定休假一周。在她离开后,我设法调试她的代码——因为那些代码没有注释、晦涩难懂且不合逻辑。”


“天啊。这种局面可真是太可怕了。有时间改这些代码还不如从头重写呢。”


“是啊,太难了。等她休假回来,我们进行了长时间的讨论。我说读懂她的代码需要花费的时间太长了,她听后很难过。当天晚上我甚至做梦梦到我已经放弃了Zappy。可是,到了第二天早上,奇迹出现了:我的这位波兰的朋友交出了一份漂亮的代码,不仅实现了所有必要的功能,还改好了我之前所有的反馈。”


“太难以让人置信了。”


“疯狂吧?”他说道:“后来我们三个人熬了好几个通宵,终于完成了这个不可能完成的项目。如今这个项目运转良好!”


“好厉害!我希望我也能有这么棒的经历。”我说,“那么特斯拉呢?你是怎样拿下特斯拉的面试的?”



拿到特斯拉的面试



到此为止,我们就硅谷42号的精彩项目谈论了大约一个小时。接下来,他要谈谈如何设法拿下了特斯拉的面试,并成功获得了在特斯拉实习的机会。


“7月份的时候,整个Zappy项目和C ++ piscine(面向对象概论;大约两周的小型C ++项目)都结束了。周日是世界杯的最后一场比赛,法国队获得了比赛权(我和我朋友都是法国人)。由于我住在免费的宿舍,所以我攒了一些钱。去巴黎的双程票非常便宜,而且我很想家,所以我决定乘飞机回法国。”


“怎么可能!?”我说着说着,不禁大笑起来。


他也笑了:“我真的很想回家。我周六到家,看了决赛,然后宅在家里大约一个星期。后来,我觉得我不能继续悠哉悠哉了,我必须回去编程。”


“所以,你真的只在法国待了一个星期?”我说。


“差不多吧。当我从法国回来后,学校的主管来找我。他打开笔记本电脑跟我说:'我的这位朋友在特斯拉工作。我打算给他发一封电子邮件,推荐你去实习。'”


“你好幸运啊!”


“也许吧。但当时的我感觉‘除了piscine之外,我没有太多C++的经验(实习技术栈要求C++),所以我觉得现在发申请未必是最佳时机。可以等几个月吗?但是,这位总监已经在写邮件了。他跟我说:‘哦。你没有太多用C++编程的经验,是吗?你可以学啊!’说着,他写完最后一句话,点击了发送邮件。我……Kwame(总监的名字)!”


硅谷42号(前任)总监在推特上的照片


“不能吧?那你怎么办?”我说,感觉有点莫名其妙。


“我别无选择啊,只好再发了一封邮件,并附上我的简历和一封求职信。然后,我说他们可以随时面试我。”


“等等,你说你需要几个月才能真正掌握C ++?!”


“是啊,而且我觉得我错了。结果不到20秒特斯拉的那个人在回复中说:‘好啊,下周三见见吧。’那天是周日。我不可能在4天之内做好准备啊,所以我跟他解释说,我需要一点时间完成一个尚未开始的项目。后来我们把面试定在了两周内。”


“太吓人了吧。这样一来你有足够的时间准备面试了,是吗?但是,C ++真的很难。我觉得就算是有两周的时间,你可能也学不到任何实质性的内容。”


“这就是为什么我宁愿集中精神做一个有趣的项目,给他们展示,而不是学习C++。另外,总监告诉我,他们会经常查看我们的项目,检查我们的代码。”


“有道理。那么最后一个项目是什么?”



最终的项目



他回忆说:“我想做一些与特斯拉有关的事情,所以我尝试了几十种不同的想法,但都没能让任何人信服。每天,我都会带着一个新课题去总监的办公室。他看着我说:‘你的想法都很糟糕,你真的很失败啊。’终于有一天我找到了一个让我信服的项目:一个自动驾驶汽车交通的模拟器。”


“嗯,我记得你跟我说过这个项目。”


“哦,对,我们可能已经讨论过了。本来我读了很多很多数学的论文,我关心的并不是方程,我只想找到一种方法来实现一个很酷的演示。我找来了Bomberman组的那个人,还有我最好的两个朋友(包括我波兰的那位朋友),然后我们开始写代码。我们非常地努力,因为只有一周的时间来编写所有的代码。如果我没记错的话,我最好的一个朋友有全职的工作,所以我不得不说服他下班以后来硅谷42号帮忙。”


“这一次你真的是在管理一个团队的项目!”


“差不多吧。你知道我承受了多大压力吗?但是,每当我想起那段时光,都会为我们取得的成就而感到自豪。”


“那肯定呀。后来面试怎么样了?”我好奇地问道。



面试



特斯拉


“首先,我和那个人进行了电话面试。他告诉我上午11点举行电话面试,我从11点一直焦急地等到11:45,一遍又一遍地看手机,最后手机终于响了。那个人很好,他询问了我的个人生活,我以前做过什么,我的项目等等。”


“后来,我与在电话中交谈的那个人进行了面试。我们相约在中午,他邀我去吃午饭。午餐期间,我一直在想下午他要问我什么问题。我只有一个星期准备面试。我所做的只是完成了那辆自动驾驶汽车交通模拟器。我甚至没有复习二叉树问题等基本的计算机知识。我看过一本C ++书,仅此而已。”


“这很冒险啊。但是,我觉得你时间有限,所以也没办法做那么多准备吧?”


“是啊。吃完饭后,他带我去见了他的团队成员:‘你说你喜欢数学,对吧?这是我的一位工程师,他拥有数学博士学位,你们两个应该合得来。’然后我跟着这位博士去了一个房间,里面有很多人正在吃午饭。我们无法使用白板,所以这位博士就直接开始问我C++的问题。”



“我的天。真是怕什么来什么啊。”


“谁说不是啊。尤其是在硅谷42号他们只教了我C++98标准,所以我完全没有准备。第一个问题是:“你能定义一个智能指针是什么吗?”,这是一个现代C ++的问题。”


“那你怎么说的?”


“我尽可能地回答了这个问题,谈论了编译的运作机制等等。在回答所有的问题时,我总是说:‘我不知道这个问题的答案是什么,但是我的印象中它是这样的。’我觉得可能他喜欢我的这个说法。”


“这表明你很谦虚,而且你知道自己的知识有限,很了不起。”


“可能吧。后来,他开始问我‘未定义行为’的例子,我不知道该怎么回答,当时我大脑宕机了(笑)。突然之间,我想到了之前项目中的一个例子:‘当多线程时,如果你声明一个没有volatile关键字的变量,那么编译器可能会最终删除该变量(我猜是出于优化原因),导致未定义的行为。’面试官说:'好吧。你有没有一个更简单的例子?’最终我给出了一个更低级的例子,比如乱序执行。”


我大笑道:“也只有你才会给出如此复杂的答案。我觉得这可以表明你有C ++编程经验,而不只是背诵开发手册。后来怎么样了?”


“是啊,我觉得我还算有一些C++的经验。在问完这些问题后,周围的人都吃完午饭了。他开始使用白板,写了一个二叉搜索树的问题。这倒是挺容易的,因为我们在本科的数学题中就做过这样的准备,还记得吗?”


“最后,在我完成那道题后,有人来了,我们不得不离开这个房间。我的面试官说的唯一的一句话是:‘看着可以啊。’所以我感觉我算是过关了。整个C++的面试以及白板考试花费了大约一个小时。后来,工程经理回来了,他又面试了我一个小时。他问的都是有关编译的非常低级的问题,因为他曾经与负责clang的优化团队合作。”


“厉害啊,你表现得很出色啊。”


“所以,这就是我面试的全部经历。从那以后,我没再去过特斯拉,直到开始实习。”


“你说的很好。你从来没参与过黑客马拉松吗?”


“哦,有黑客马拉松。简而言之,在参加完特斯拉的面试几周后,最终我与硅谷42号的朋友们参加了历时很长的黑客马拉松。我们算是赢了吧,所以我获得了一次机会,与一位了解特斯拉人公司的人交谈,甚至还向他展示了我的自动驾驶汽车交通模拟器。”


“很酷啊。”


“谢谢。最酷的部分是,当他与特斯拉的团队交谈时,他们说:‘哦,那个人啊,我们认识,几周前我们见过。’所以到此时此刻我知道我已经拿下了实习的机会。”


“真厉害,”我说着,对眼前这个家伙充满了敬畏,“从你抵达硅谷以来,你所做的一切都让我刮目相看,你给了我很大的鼓舞。与你的这番谈话让我有种冲动,想现在立刻(凌晨2点)杀到巴黎42号开始编程!”我大笑着说。


他也大笑着:“好啊,我也很高兴能与你交谈。我觉得你并不需要这个故事来给你动力,你自己也做过一些很疯狂的事情啊。”


“对。但是与你的交谈仍然是一个巨大的动力。如果我将我们的谈话写成一篇博文,你介意吗?”


“完全没问题。”他说。


原文:https://hackernoon.com/how-my-friend-got-an-internship-at-tesla-after-only-8-months-of-coding-6578c32f3e77

本文为 CSDN 翻译,如需转载,请注明来源出处。





 热 文 推 荐 

☞ 程序员求职新思路:互联网巨鳄瓜分 ToB 资源全公开

☞ C++ 的门门道道 | 技术头条

 互联网不再迷恋北上广

☞ 那些简历造假拿 Offer 的程序员,后来都怎么样了?

☞ 被V神点赞, 我是如何用五子棋打败以太坊排名最高的应用的? |人物志

☞ 50个最有价值的数据可视化图表(推荐收藏)

☞ 一键免费自动AI抠图,效果连PS大哥也点赞!

☞ 史上最难的一道Java面试题!

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存