小弟不才 贡献一下经验
针对找Intern这个目标提供建议
0. Book
Cracking the Coding Interview(CTCI)
新版是189 旧版是150 可以从美国Amazon直送台湾
里面非常多基础的CS 资料结构/算法(Data Structure and Algorithm, DSA)基础
非常推荐仔细阅读 然后实作章节习题
(6th Edtition)
可以先读Ch1~10 除了ch9
他的hint写得还不错
Element of Programming Interview (C++/Java/Python)
挑一个你决定用来刷题/面试的语言的版本
与CTCI不同的是他是以题目为基础,难度较高
可以学他里面的写法
培养与锻炼:程式设计的逻辑脑
进阶书,里面的题目比起前两本难度更高
但是解释得很清楚 适合冲击大脑
1. Website
LeetCode
直接课金买个一年订阅
等等再仔细讲怎么刷题
一亩三分地
国人资讯集散地 没事就去找工求职版看看
大米可以去新人区发报到文拿100个
LinkedIn
赶快建立你的个人资料
疯狂connect
2. Resume
赶快把自己的履历写好 多找些人review
板上有很好的文章可以参考
甚至可以花钱找人校稿 这是你拿面试的第一关
一个HR平均花15秒扫 能不能move forward就看这一张A4纸
# 感谢sean51623更正 美国履历是用letter size
A4比较瘦长 letter size比较矮胖
在排版上可以注意一下空间
另外推荐可以去做一些side project
不管是线上课程或是找几个朋友一起弄个APP
甚至open source 都是很棒的机会
还可以培养CS的基础知识
3. 刷题
该怎么刷题?只要会for if else while这种干话就不用理了
为啥要刷题?在面试中有很多东西会被评分
Coding, Algorithms and Data Structures是其中两项可以透过刷题培养的
Coding: 写代码的能力,看你能不能在有限的时间写出合理/bug free的code
A&DS: 分析问题的能力,能不能再与面试官(同事)的互动沟通中从有限的资讯
理解并且找到一个或数个解法,知道解法的优缺点与trade off
什么时候开始刷题?
CTCI看完 对于stack/queue/heap/hash map/linked list/tree...
这些Data Strucure的概念有理解
BFS/DFS/DP/Recursive/Backtracking/Binary Search/BST/Sort/Greedy/Union Find
算法知道基础 Big O计算
就可以进场打怪了
我推荐挑一个tag刷 入学前我刷了
tree -> Binary Search -> linked list -> Backtracking -> Sort
这些章节比较独立 例如Tree
你懂preorder/inorder/postorder traversal 的recursive/iterative
就可以解大部分的题目
而且tree的想法可以帮助BFS/DFS的思考
像是Array/String会有综合型的考法 适合你做腻某个tag时来刷XD
看到题目 先想Brute Force, time&space complexity
想一下哪里可以再优化 例如你看到一个无序array
你心中的算法是O(N^2)
想看看如果排序会不会有更好的approach 这样就可以降到O(NlogN) time
还是可以先预处理到Hash Map, 这样set/get 就可以压到O(1) or O(logN)
再去跑整个array就是O(N)
诸如此类
一开始会很挫折 一题大概你一小时想不出来就去看答案吧
但是不要只有"看" 要去理解怎么推导出来
我觉得讨论区才是leetcode的精华所在
重点是每一题都要做笔记(英文)
把你从暴力解->最佳解的想法写出来
还有time and space complexity (非常重要)
4. 投履历
Start early!!
大概九月初大公司的intern缺就会开
我大概九月中开始投
由于一种叫做Diversity的关系 每个学校有个head count
当然这没有公开的被承认 只是根据以往的数据有这样的现象
因此早卡位早赢 拿到HR信后再把面试时间排后面一点
不要想说我题没刷够就不敢投
注意一下圣诞节 面试尽量不要约在这附近
很煎熬的XD
大公司能内推就内推 ex:FLAG
海投基本上有去无回
找不到内推?LinkedIn这时就发挥用途了 或是一亩三分地也有内推版
(要注意基本的礼貌还有书面形式)
中小公司就海投然后祈祷
career fair很重要 可以锁定中小型公司去投
没有什么拿小公司练手这种事情 能拿到面试都是全力以赴(因为中小公司根本不鸟我QQ)
5. 面试
Intern通常只有phone interview(某些神奇的公司会叫你去onsite/University Day)
CTCI也有解说可以看看
我提几点与面试官交流的感想
a.问清楚规格 input/output, error handling, limitation...
b.从暴力解开始推(对 就是你刷题笔记做的事情)
如果你天生神力直接推出最佳解也先简短带过暴力解
让面试官知道你的整个思考流程
c.征询同意 等你说明完解法后记得问问面试官我要用这个解法ok吗
d.我手写我口 coding时可以一边说明 帮助面试官理解你的code也可以帮助思考
如果面试官突然打断你问你某个部分code 那你很有可能写错了
e.注意语速 可以透过mock interview改进
沟通非常重要 大多公司要找的是可以讨论的人不是解题机器
而且就算最后的code有bug 也有机会可以通过
6. 课业
如果你像我一样底子不够 只想找工作 可以参考一下
我的做法 但不是每个人都适合这样做
刚到美国第一个quater我只修水课
(只有作业project没有考试 GPA给得高)
除了必要的行程其他时间都在刷题改履历投履历
No social life
7. 资讯战
拥有对的资讯可以帮助你拿到面试/offer
无奈台湾人的网络实在难以与国人或三哥对抗
我加了不少国人群组 也在一亩上爬很多文章
知道某个时候某个公司会偷偷打开intern position两周
知道某些公司偏好的题型还有面试技巧
知道某个公司今年收超少人 引发CS寒冬将近的舆论
而且国人讲话蛮有趣得XD
8. 杂谈
CS越来越多人来念 intern的竞争也越来越激烈
每年大概只有10%左右的人拿到intern
并不是说没intern找不到full time
而是对于转专业或是经验不足的人是一个天大的加分机会
整个过程就是一个字"运"
但是要在运气降临的时候做好万全的准备就是自己的工作了
大概是这样
如果有任何的问题都可以推文or私信讨论