不同的细分方向,有着不同的工作内容。它们在市场上的职位数量,未来的发展机会,使用的语言框架都是不同的。
网上所谓“如果难以抉择,在开始一星期把感兴趣的语言都尝试一遍,选出适合自己的”说法,其实是非常一言难尽的。
对于跨专业求职的人来说,语言不能随便选。实际理想情况应该是在充分了解细分方向后,根据自己的兴趣或者技术背景优势,根据该方向的常用语言框架再做选择。
况且,一周时间对于一门语言来说,连熟悉syntax的时间都不够,更谈不上了解了~
(三)熟练白嫖
注意,上述这个建立从0到1的过程,是你的最佳(或许也是唯一)省钱阶段。
以Data方向为例,同学们可以先到Coursera去上一门课,IBM的Introduction to Data Science。
想要往数据方向走的话,建议先尝试上一下这门课程,铺一个最简单的基底。
最简单的东西都不需要花钱(为了吸引流量)!网上资源特别多,去Coursera, Udemy这样的平台学一学看一看,省钱又快乐!
当你学完了基础,想要建立从1到2,从1到10,乃至从1到100的过程时,网上能获取的信息开始逐渐变少,想要深度挖掘只能靠自己去读paper……不但要一点点去啃,而且还要分辨知识的准确性可用性,这是多么痛苦的事……
三、你已经是个成熟的转“码”人了
如果你已经打下了一定的基础,算是初窥天机,可以开始下一阶段的学习了。
(一)大佬押题准
这次我们以SDE方向为例。同学们在掌握了非常基本的语言内容后,是时候学习以下内容了:
1. 树
树的定义以及分类
二叉树非递归的前中后序遍历
二叉树重构
二叉搜索树的定义,添加,查找和删除
平衡二叉树定义
Trie树定义和实现
面试中二叉树复杂题目解答技巧
2. 栈
栈的定义以及定义相关面试考点
面试中单调栈问题的讲解
3. 哈希表
Hashmap的基本含义和接口
Hash Function以及collision的含义和解决方案
Hashmap基本习题和在面试中解题的运用
4. 堆
堆的定义以及实现方法
面试中堆的题目类型和基本习题
面试中堆的hard难度习题
5. 图及拓扑排序
图的定义以及拓扑排序的定义
图的常用习题精讲
拓扑排序习题精讲
实际面试中图及拓扑的题目讲解
6. 递归
递归基本概念及使用方法,尾递归定义
简单递归问题
复杂递归问题
面试中常见的递归题目考察方法
7. DFS
DFS含义及与BFS的比较
二叉树内部的DFS使用方法
复杂问题的DFS分析
DFS在面试中的应用
8. BFS
什么是BFS?BFS具体定义和方法
二叉树内部的BFS使用方法
复杂问题的BFS分析
BFS在面试中常见题目解析
面试中DFS和BFS均能解决的问题特征分析
9. 动态规划
动态规划基本定义和使用方法
简单动态规划应用问题解析
中等难度动态规划应用问题解析
复杂动态规划应用问题解析
动态规划如何巧妙解决面试中的常见问题
10. 排序
多种不同排序在时间复杂度、稳定性、空间上的比较
Java中sort库的使用方法
桶排序思想的问题精讲
其他排序问题讲解
面试中常见的复杂排序问题
11. 位操作
基本位操作的方法和技巧
位操作的常见习题解析
面试中如何巧妙运用位操作解决问题
12. 操作系统考核要点
线程和进程
生产者与消费者问题(producer and consumer problem)
多线程与死锁问题分析
Java和C++中的栈和堆在操作系统级别的特性
面试中常考的Java线程及内存相关关键字和常量池
内存优化问题的探讨
13. 面向对象设计
继承(对象及函数)问题
组合及参数化问题
接口(interface)问题
设计模式常考点总结
14. 系统设计
系统设计题分类和基本知识点
系统设计题思考模式和答题技巧
数据库在系统设计中的应用分析
面试中其他系统设计常见考点
面向对象设计答题和思考技巧
最新面向对象和系统设计面经题目精选
……
这四大模块内容是重要考点:
1. 数据结构与算法:在北美大厂考核里,能占到60%~70%的比例(公司越好!考的越难)。
2. OOD & Design Patterns:OOD考基础知识,比如什么是encapsulation, interface, api, 如何用interface等,有时也会考一个落地的带有功能导向的小型应用场景,比如怎么去用诸如Factory Pattern, Observer Pattern, SingletonPattern等Design Patterns去完成这种场景的设计。
3. System Design:应届生的话,答题方向有基本的sense,参考模板式答题方法,不会太减分(反之,工作的越久,职级越高,考的轮次越多,题也越难)。
4. 其他基础知识(组招大型公司+中小公司更常见):如Operating System, Computer Network, Database等方面的基础考核。
(二)看点狠的
当然,学到现在,仍远远不够。想被大厂捞走,这些条件都要达到:
1.简历:
格式简洁、描述清晰、语法正确、整体美观大方;
2.有高质量的实习经历和工业级项目;
个人经历与职位的细分方向一致,充分展现专业技术,对应技能侧重点一致,与职位需求高度匹配;
3.硬技能:
数据结构与算法功底扎实,可熟练快速实现任意Medium题(15分钟内做出任意Medium题),高频的Hard级题目也能整体掌握;
针对岗位需求掌握相应技能——应届生OOD和System Design熟练掌握,海外有要求的组招公司,OS和计算机网络熟练掌握;
4.软技能:
简历面试交流得体有逻辑,能流畅回答;
掌握BQ,充分理解亚麻16条,注重细节,有数个完整的大型故事……
想要进一线大厂,这些条件都要满足。如果你拿捏不准自己是什么水平、或者是Data, UIUX, PM等其他方向?
四、写在最后
“转码一定要数学特别好”
“必须要有CS学位”
“女孩子优势大,无脑转就是了”
……
提到跨专业求职,我们总被一个又一个的刻板印象迷惑着
实际上——
高中数学就足够应对;
CS学位不是必须;
女孩子面试bar不会降低,不过由于Diversity可能会有加面机会……
实际上——
跨专业求职并没有那么难;
直通硅谷每年都有不少学生是非科班出身;
他们有些自始至终都没在学校报过相关课程……
即使非科班出身、编码能力较弱,通过学习,也可以争取科技大厂offer。
最后,如果屏幕前的你希望加入科技行业,任何与跨专业求职相关的疑问,都可以咨询我们。