03_美国data找工个人经验分享Technical Part
03_美国data找工个人经验分享Technical Part (English Translation Coming Soon)
美国data找工个人经验分享-Technical Part
一晃来美国也好几年了,从一个懵懵懂懂、看什么都新鲜的留学小白,到现在在tech公司里当一个熟练的“搬砖工”,真的感慨万千。今天这篇,不说虚的,纯纯就是想和大家掏心窝子聊聊我在美国找data工作的technical part,特别是那些让我头秃、让我怀疑人生的面试经历,希望能给正在这条路上奋斗的你一些小小的参考和慰藉。
我的故事得从我踩的第一个大坑说起。刚开始找工作的时候,我和绝大多数人一样,觉得Data Analyst (DA) 岗位是“新手村”,门槛低一点,应该比较容易上岸吧?但说实话,这个想法真的太天真了。DA的简历池子简直就是个无底洞,什么背景的人都有,乌央乌央的,竞争激烈到让人窒息,而且薪资天花板也肉眼可见。我海投了无数份简历,感觉就像石沉大海,连个响儿都没有。好不容易有几个面试,也都在“tell me about yourself”之后就没了下文。那段时间真的特别挫败,天天窝在公寓里,看着窗外的蓝天白云,心里却是一片阴霾,天天怀疑自己是不是真的不适合干这行,甚至一度想过要不就打包回国算了。那种感觉,就像在一个黑暗的隧道里,看不到一丝光亮,充满了无力感。
后来痛定思痛,和一个已经上岸的前辈深聊了一次,他一针见血地指出我的问题:方向错了。他告诉我,对于想在tech领域深耕的人来说,Data Engineer (DE) 和 Data Scientist (DS) 才是更值得努力的方向。特别是DE,市场需求巨大,而且越老越吃香,薪资也比DA高出一大截。听君一席话,胜读十年书。我茅塞顿开,立马调转船头,主攻DE岗位。这个决定,现在回头看,真的是我求职路上最正确的一个选择。
转攻DE之后,我才发现technical interview的画风完全变了。不再是之前DA面试那些偏向business sense和case study的软性问题,而是真刀真枪的硬核技术考察。踩过坑的人都知道,DE的面试非常注重细节和实际操作经验,面试官会默认你不仅懂理论,还要能立马撸起袖子上手干活。他们想找的是一个能解决实际问题的工程师,而不是一个只会纸上谈兵的分析师。面试官的眼神里,透露出的都是“show me the code”的期待。
SQL是DE面试的绝对核心,但如果你以为只会一个SELECT ALL FROM table就万事大吉了,那可就大错特错了。窗口函数 (window functions) 比如 ROW_NUMBER(), RANK(), LEAD(), LAG() 是家常便饭。公用表表达式 (CTEs) 也是必须熟练掌握的,因为复杂的查询逻辑基本都靠它来组织。各种JOIN(特别是LEFT JOIN和OUTER JOIN)的灵活运用,更是基本中的基本。我面试的时候,就被一个面试官追着问TRUNCATE、DELETE和DROP的区别以及它们对transaction log的影响,当时我只答出了表面的区别,对于底层的实现机制就说得含糊不清,场面一度十分尴尬。还有一次,一个面试官直接甩给我一个复杂的业务场景,让我现场在白板上写一段SQL来解决data inconsistency的问题,那段SQL里要用到好几个窗口函数和子查询,当时我真的紧张到手心冒汗,感觉脑子都快转不动了,白板笔在手里抖个不停。那次面试之后,我回去把所有SQL相关的知识点都重新梳理了一遍,从最基础的GROUP BY到复杂的PIVOT,都自己动手写了好几遍,才算心里有了点底。
除了SQL,Python也是必考项。倒不是说要你现场写出多么复杂的算法,但基本的数据结构,比如list, dictionary, set的熟练使用是必须的。我遇到过让我用Python处理奇形怪状的字符串、解析一个超大的JSON文件、甚至用Flask写一个简单的API接口的。有一次,面试官让我详细解释Airflow的DAG是怎么工作的,怎么schedule tasks,如果一个task失败了要怎么处理,怎么设置retry机制。这些东西,如果没有实际做过项目,光靠在LeetCode上刷题真的很难答得上来,因为面试官会追问很多细节,比如“你当时为什么选择用KubernetesPodOperator而不是BashOperator?” 这种问题,没踩过坑的人根本答不上来。所以,我强烈建议大家,一定要自己动手做几个完整的项目,把整个data pipeline跑通,这样在面试的时候才能游刃有余。
ETL (Extract, Transform, Load) 流程更是面试的重中之重。面试官会问得非常细,比如你之前项目里的data pipeline是怎么设计的,数据源是什么(是Kafka消息队列还是S3上的文件?),数据量有多大(是GB级别还是TB级别?),用了哪些工具(比如Apache Spark, Flink),怎么做的data validation和data quality check。我记得有一次面试,面试官就揪着我简历里的一个项目,从头到尾把整个ETL过程问了个遍,细到连“你们的表是怎么命名的?遵循什么规范?”这种问题都没放过。不得不说,这种刨根问底式的提问,真的能检验出你是不是真的做过,还是只是在简历上“包装”了一下。所以大家在准备面试的时候,一定要把自己的项目经历梳理得清清楚楚,每一个细节都要能说出个所以然来。
数据库相关的知识也必不可少。Star schema和snowflake schema的区别以及各自的优缺点,HBase和传统关系型数据库(比如PostgreSQL, MySQL)的对比,HDFS和RDD的区别,这些都是高频考点。我之前面试JPMC的SDE II (DE方向)时,就被问到了data migration和git deployment的策略,当时就有点懵,因为确实没怎么深入准备这方面的东西,回答得磕磕巴巴,结果可想而知。所以大家千万不要有侥幸心理,觉得这些东西不重要,面试官可能不会问。恰恰相反,这些基础知识,最能体现一个人的技术功底。
另外,像Tableau, Power BI这类BI工具,A/B Test, Machine Learning的基础知识,面试官也可能会顺带问一下。虽然不要求你精通,但至少要了解基本概念和应用场景。我最终上岸的这家公司,在最后一轮面试的时候,面试官就问了我一些关于Tableau dashboard performance tuning和A/B test结果解读的问题,幸好我之前有所准备,才没有露怯。特别是A/B test,现在很多公司都非常看重,所以建议大家一定要好好准备一下相关的知识。
一路走来,磕磕绊绊,我最大的感悟就是,找工作这件事,真的没有任何捷径可言。刷题固然重要,但它只能帮你通过最初的OA筛选,真正到了technical interview的环节,面试官看重的是你扎实的理论基础、丰富的项目经验以及解决实际问题的能力。对于我们留学生来说,英语和沟通能力也是一道无形的坎。很多时候,我们不是技术不行,而是没有很好地用清晰、有逻辑的语言把自己做过的东西和自己的思考过程展示给面试官。回想起来,那段日子真的很煎熬,每天都在刷题、投简历、面试、被拒的死循环中度过,有好几次都想干脆放弃回国算了。但好在,所有的坚持和努力,最终都没有被辜负。希望我的这点血泪史,能给正在迷茫和挣扎的你一点点鼓励和启发。找工作就像找对象,有时候真的看缘分,也看时机。在那个对的offer到来之前,我们唯一能做的,就是不断打磨自己,让自己变得更强,更有底气。祝大家都能早日上岸,拿到自己心仪的offer!
#美国求职 #data #datascience #dataanalytics #dataengineer #tech #工作 #留学 #找工作 #经验分享
延伸阅读 Recommended Reading
- Gilead Sciences Data Engineer面试题和答案
- Meta DS Product Analytic面试分享
- 美国DS NG Career Fair会惩罚每个不做攻略的人(干货)
- Bain Business Case面试题和答案
- Eli Lilly Data Engineer面试题和答案
- Regeneron Data Engineer面试题和答案
- 美国DS NG Career Fair会惩罚每个不做攻略的人(干货)
- Moderna Data Engineer面试题和答案
- Pfizer Data Engineer面试题和答案
- AbbVie Data Engineer面试题和答案
