首页 > 互联网资讯 > 他三个月刷题面试去FB,然后用了三年把刷题心得写成这本书

他三个月刷题面试去FB,然后用了三年把刷题心得写成这本书


导师简介

ZHAN导师是在市值最高的互联网公司担任software engineer职位。主要负责连接前段和后台的SERVER端的技术支持。同样也是《程序员面试白皮书》的作者之一。在App Store有5星的好评。


工作上遇到的一些挑战


技术上的挑战有一些,但是主要的挑战还是在如何有效利用公司的资源。 大型成熟的公司会有自己一套资源体系,我觉得熟悉和学会运用这套资源体系很重要。举个例子,我对security这个方向了解的不是很多,那我就要学习和运用基础的infrastructure来处理与security的项目。这个时候寻求他人的帮助是最有效的处理方式之一。

然后在如何带领团队去向别的组寻求帮助这个问题上,我觉得做好这几点可以达到正面的效果。首先是要让别的组的人engage进项目里来,让他们觉得自己也能从这个项目中获得提升。其次是在寻求帮助时,强调事件的紧急性和重要性


Software Engineer需要具备的技能


规模大的tech公司对技能背景要求不会太高,因为大公司在入职后会提供正规和系统的培训。所以说一份好的简历对获得面试至关重要,可是拿到面试机会后,简历的作用就不大了。面试中,在扎实的技术基础和好的逻辑能力上,面试官会侧重观察面试者是非反应敏捷以及能否有效的交流。打个比方,哪怕是求解fibonacci的通项这样的简单问题,也是有一个循序渐进的思维过程,从递推公式,到递归的实现办法,再到用动态规划提高时间效率,最后注意到空间效率可以进一步提高。那么面试官就会从这些来观察面试者的思维方法思辨能力



高效的投简历渠道:


找工作时我在3个方向做了准备。 

首先是把自己投入一个积极找工作的环境中去。因为通过耳濡目染会渐渐了解到大家在看什么素材,找工作的大致方向和行业走向。那么这个也包括多跟找工作的朋友交流,networking,和多浏览求职相关的网站(比如MIT-JOB HUNTING, 一亩三分地)。 

其次要去了解面试题库,要熟知那些通常会被问道的题目。 

最后就是要多总结。面试多了以后会慢慢感觉到面试都是有模式所循的。我自己也总结了一套面试的套路并且出版成了书,程序员面试白皮书。这本书可以在APP Store上面搜到 。

投简历的时候我觉得有两条比较高效的渠道。

首先是积极的找内推。提供内推的人的范围其实很广,可以是学长学姐,可以是在感兴趣的公司公司的校友等等。找完内推了之后也要注意积极的跟进。

 还有一个方向是通过LinkedIn。 而且即使职位描述所需的技能与自身不是太相近我也会鼓励多投,因为每一次面试都是很好的mock和总结的机会。



面经:


我是经历了第一轮电话面试和第二轮on-site面试。电面是技术面,我当时一边与面试官电话沟通,一边在共享的google doc上写code。 第一轮的面试有时候来的会比较快,比如说在校招上,上午的career fair, 下午就会给第一轮面试。所以我觉得在准备投简历前最好就做好比较充足的准备,这样才能在第一面时好好发挥。

 投简历前,我觉得可以从以下几方面着手准备。


要对公司有一定了解

这个了解包括了文化,产品,招人风格。

做好technical问题的准备

比如熟知基本的数据结构和算法,design方面的例题。 


第二轮的on-site会有3-7轮不等的面试,每个面试是45分钟到1个小时。侧重点还是会在technical问题上,但是也会有一小部分的很常规的behavior面试题,比如说Why this company, how do you picture yourself in 5 years, what have been your biggest challenges?


转专业投Software Engineer的心得


我觉得转专业投CS职位的难度并没有大家想象的那么大,因为大公司会对新员工提供专业和系统性的培训,所以技术层面上面试难度并不会太大。 很多时候觉得转专业难是来自转专业求职时自己的心理压力。

很多转专业求职的学生在回答为什么会选择software engineer这个职位的时候,会不自觉地提到原来的背景与这个职位有偏差。其实这种回答并不是很可取。我比较建议的回答模式是肯定自身之前的经历与背景,表达出自己喜欢做有挑战性的事,所以慢慢积累相关的知识和经历想现在来挑战software engineer这个职位。 

对于跨专业找software engineer工作的求职计划,我比较提倡“查词典式学习法”。在练CS相关的项目时,遇到不懂得知识再去查,从而形成自己的一个知识体系。 长期的求职规划,我觉得可以从一些核心的CS相关的项目开始练手。短期的求职规划,我觉得要多看面经,多了解计算机常识性的问题



面试时的注意点


一定要讲清楚自己的思路

不光要解释怎么做,还要强调为什么要这样做

 在遇到不会的问题时,我有一个trick。先把自己会的地方都调理清晰的讲出来,实在不会可以利用面试官来给提示。但是不要问太多,否则容易给面试官留下你技术不过关的印象。


看到的学生的共性


求职的过程中分准备简历期,面试准备期,和面试期。

 在简历的准备上,我发现有些人的误区是会在简历里列举一些滥竽充数的经历来使简历看起来很充实。其实这么做会适得其反。比如说一个机械工程背景的学生投software engineer工作时会列举一些机械方面的经历。再比如说有些学员会把IDE甚至操作系统也列举到technical skills section里。这样很容易给HR留下专业能力不足的印象,所以我会强调要把与职位相关性大的经历和细节写在简历里。

 其次在简历里要少用形容词形容自己的项目经历,而是要多具体列举自己取得的成果,和做项目时用到的工具。 而且可以适当的突出自己的优势,如果是Green card holder,一定要把这个信息放在简历里。 

还有一个就是在面试时的要有自信,不要觉得自己参与的项目含金量不高,要有自信地把经历说出来才能取得面试官的青睐。同时也要有一个积极的心态,表现出自己对技术的热情,对这个领域有关注有了解。


您给学员带来的最大的帮助


我会帮学员梳理之前的经历,挖掘出里面的闪光点。我还会根据每个学员给出个性化的准备方向。根据学员所在的程度,让学员清晰的知道自己哪些方面已经达标了,哪些方面还需要努力,以及具体看哪些资源可以进行有效的提升。



8课时魔鬼训练课程

9大主题系统性解题介绍

30道算法,数据结构真题举一反三

覆盖leetcode 高频面试题

4周组队刷题狂潮带你赢取高薪FLAGOffer !


  明 星 导 师   

罗老师

Senior Software Engineer, 拥有8年一线软件工程师工作经验,曾就职Facebook, Google, Amazon等多家明星级硅谷一线公司,《程序员面试白皮书》作者之一。熟悉软件开发,数据结构和算法。长期参与技术招聘,面试人数超过200人,对CS和非CS专业学生如何求职软件工程师有独到的见解和高效的求职方法。Office Hour金牌导师,辅导学员超500人,独创的9大主题刷题法使你用最短的时间刷完最多的题!




  适 合 学 员   

  • 无算法基础,或算法基础薄弱,不系统

  • 希望求职Facebook, Google, Linkedin, Airbnb, Uber等硅谷知名企业

  • 面试经验少或无面试经验,不知道与面试官如何正确的沟通和展现自己

  • 网上练习题目那么多,不知道该从哪些题开始准备

  • 获取最新面试动向

  • 认识一起找工作的其他小伙伴


马上扫码入微信群,了解更多课程详情。



  开 课 时 间   

第一节课

2018/6/2(周六) 美西时间7:00pm - 9:00pm


第二节课

2018/6/3(周日) 美西时间7:00pm - 9:00pm


第三节课

2018/6/9(周六) 美西时间7:00pm - 9:00pm

第四节课

2018/6/16(周六) 美西时间7:00pm - 9:00pm

错过直播不要怕,直播结束后会发出直播视频回放

课后会有项目和微信群刷题,帮你巩固知识。

  课 程 大 纲   

第一节课 

你好,技术面试


第一课目标:

  • 针对程序员需求量最大的“热门公司”,一一讲解这些公司的面试特点。

  • 知道如何写出一份“tech interview ready”的简历

  • 全面了解技术面试流程,“兵来将挡”地应对面试中可能碰到的各类面试官

  • 知道怎样完整、全面地回答一道白板编程题,再也不会出现“我觉得面得不错,最后为什么没有进”的尴尬


1. 面试风格和面试题

  • Facebook

  • Google

  • Apple

  • Cisco

  • Oracle

  • 初创公司

2. 如何写简历才能看起来更像一个高大上的码农?

3. 如何准备技术面试?技术栈总结

  • 从“软”到“硬”了解程序员的一天

  • 程序员面试技术栈

  • 程序员的分工和合作

  • 前端,逻辑层和后台我是和哪个

  • 了解你的面试官

  • 从容应对HR和工程师

4. 如何在解题思路上征服你的面试官?

  • 白板面试的答题思路

  • 白板面试答题流程


课件预览


第二节课 

算法101


第二课目标:

  • 了解面试中最常见的基本算法问题

  • 如何衡量算法效率(复杂度分析)

  • 逐一讲解算法基础内容

  • 利用“模式识别”,快速判断应该使用什么算法,利用代码模版快速解决


1. 算法面试总结

  • Merge sort, quick sort, insertion sort

  • Binary search (and variations)

  • Tree traversal: pre-order, in-order, post-order, level-order

  • Algorithm analysis

2. 复杂度计算 Time Complexity

  • 时间和空间复杂度计算

  • 顺序和循环结构复杂度计算

  • 事前分析估算法

3. 排序 Sort & Search

  • 快速排序

  • 合并排序

  • 桶排序

  • 二分查找和k选择查找

  • Sort & Search 真题1,2,3分析和应用

4. 递归和动态规划 Recursion & Dynamic Programming

  • 递归三要素和动态规划四要素

  • DP应用场景

  • 状态转移方程 

  • 遍历算法和分治算法 Traverse and Divide Conquer

课件预览


第三节课 

数据结构101

第三课目标:

  • 了解面试中最常见的基本数据结构问题

  • 逐一讲解数据结构的概念和基础内容

  • 利用“模式识别”,了解数据结构的出题套路,见招拆招


1. 数据结构总结

  • List, Stack, Queue

  • Binary Tree, BST

  • (Hash) Set, Map

  • Priority Queue (Heap)

2. 数组和字符串 Array

  • 数组,矩阵,树状数组

  • 数组的处理方式

3. 链表处理技巧 Linked List

  • 双指针算法

  • 巧用“哑节点”

4. 哈希表 Hash Table

  • 常用的哈希库

  • 哈希表的实现原理

  • 冲突解决方法(Open Hashing, Closing Hashing)

  • 哈希表高频面试题

5. 栈和队列 Stack & Queue

  •  Stack & Queue 应用场景

  • Stack & Queue 真题1,2,3分析

  • 解题原理,复杂度分析, 拆解同主题题目

6. 树 Tree

  • 二叉树,二叉搜索树,字典树

  • 二叉树的序列化

  • 二叉树的分治算法

  • 递归三要素


课件预览



第四节课 

当算法遇上数据结构

第四课目标:

  • 算法和数据结构课程的进阶,挑战面试中最有难度的问题

  • 从经典算法问题中总结模版,举一反三

  • 了解算法在实际工作中的应用


1. 树和图的周游

  • 递归算法

  • 深度优先

  • 广度优先

  • 真题1,2,3分析

  • 解题原理,复杂度分析, 拆解同主题题目

2. 图的算法 Graph

  • 贪心算法

  • 最短路径算法

  • 真题1,2,3分析

  • 解题原理,复杂度分析, 拆解同主题题目

3. 堆排序 Heap

  • 堆的基本原理

  • 优先队列与堆的联系

  • 堆的高频试题

4. 从内排序到从外排序

  •  B树

  • 文件系统

  • 解题原理,复杂度分析, 拆解同主题题目

5. 挑战高级程序员

  • 程序设计

  • 系统设计

课件预览


课程形式为线上视频直播,每次课程可与导师互动交流,每次课程只限20人报名,保证学习质量。中国美国可同时观看直播。每次课程结束将会给所有学员发送视频链接,可反复观看复习课上内容。

  学 员 战 绩  

部分往期精品小班学员入职公司汇总

  求 职 宝 典  

报名后即可获得价值$120的全部工程专业的求职宝典!《独家面经和题库》《美国就业手册》《硅谷求职攻略》《工程求职宝典》等的求职材料和求职资源。



  报 名 方 式  

关注北美工程师求职顾问公众号

并回复关键字:

“小班2”



 往 期 学 员 反 馈  



友情链接