软件工程师技术面试准备资源
我在之前的文章中写过软件工程面试的两种类型。我当时的目的是区分软件工程师招聘经理通常会问的两种主要面试类型:一种是数据结构和算法导向型,另一种是动手实践或讲解已完成项目导向型。这两种类型并非完全二元对立,有些面试可能会要求你同时进行这两种类型的面试。此外,面试中还可能涉及系统设计和行为方面的问题。
技术面试很难。投资软件工程师并非易事。招聘、员工留任和业务成本都会影响最终的录用结果。作为软件工程师,我们需要了解会面临什么。每个人都有自己独特的职业发展道路。我列出这些资源的目的是为了帮助那些正在求职的人们,并希望这些资源能够反映行业现状。以下是一些学习资料,或许能对您的求职之路有所帮助。
本文基于此处维护的开源 GitHub 代码库。
副业项目
业余项目是检验技能、尝试新事物的绝佳途径,而且几乎没有压力。有时,面试官甚至会对你的业余项目比你的朝九晚五工作更感兴趣!如果你没有科技行业的传统工作经验,从零开始做一个网站项目是展现你能力的绝佳方式。以下是一些在构建业余项目时可以参考的网站和文章:
- Indie Hackers:是一个面向希望构建能够产生收益的在线项目的人们的社区。这是一个充满活力、互助友爱的社区,你可以在这里分享你的项目和进展。
在题为《如何在不辞掉正职工作的情况下创办一家初创公司》的文章中, JotForm的创始人 Aytekin Tank概述了开展副业项目需要遵循的一些原则:
- 副业能提升创造力
- 找到时间
- 发现需求:创造极致价值
- 让它充满乐趣
- 坦然接受不完美
在这篇文章中,坦纳·克里斯滕森概述了如何谈论你的副业项目。文章节选:“抓住一切机会谈论你的副业项目”。
- 从问题入手。
- 明确你的方法
- 分享你面临的挑战
- 最后公布结果
- 接下来说说你会做出哪些不同的选择。
如果你想深入了解故事讲述和战略叙事,我强烈推荐你关注安迪·拉斯金,他会给你很多建议 :)
数据结构与算法问题
除了苦练之外,学习数据结构和算法似乎没有捷径。问题并不总是那么简单,但解决方案通常遵循一定的模式。掌握这些模式需要大量的练习和努力。我最喜欢的关于技术面试准备的博客文章来自Facebook 的软件工程师Ali Mir。他的文章篇幅不长,直奔主题,没有冗余的内容。
以下是一些公认的、对参加技术面试有帮助的数据结构:
- 动态数组
- 链表
- 栈和队列
- 哈希表
- 二叉搜索树
- 二叉堆和优先队列
- 图表
- 尝试
这个名为 itsy-bitsy-data-structures 的仓库包含对许多用 Javascript 实现的数据结构类型的代码讲解。
搜索和排序
这些是在技术软件工程面试中需要了解的搜索和排序流程。
-
二分查找
-
广度优先搜索(BFS)
-
深度优先搜索(DFS)
-
计数排序
-
快速排序
-
归并排序
编程范式和概念
学习指南
-
《算法入门》 ——一本免费书籍,旨在用浅显易懂的方式解释常见的计算机科学算法。
-
HackerRank 面试准备工具包- 由 HackerRank 团队精心整理的练习列表,围绕您需要了解的关键概念进行组织。
-
Rithm School 的 JavaScript 计算机科学基础课程——我一直在跟着学习,因为我没有计算机科学学位。他们解释了概念,然后推荐了一些额外的学习资源(比如 YouTube 视频和 Codewars 上的特定题目)。非常有帮助。
-
Pathrise - 帮助你找到软件工程工作的指南汇总列表。
-
Coderbyte——提供大量编程挑战,免费畅玩10个,否则每月收费30美元。
-
yangshun/tech-interview-handbook - GitHub 代码库,包含一些有用的非技术技巧。此外,还包含算法、前端和系统设计方面的问答题。
-
mr-mig/every-programmer-should-know - 别被标题吓到。这个仓库涵盖了从职业建议到数据结构、安全、架构和算法等各个方面的高层次知识。内容很多,但有助于你概览概念并发现新的学习方向。
-
jwasham/google-interview-university - 一个男人为了成为谷歌软件工程师而进行的疯狂尝试。获得超过 4.8 万个赞。我记得他最后好像去了亚马逊。真是不可思议。
-
30 秒面试题- 一份常见面试题列表及相关网站,这些面试题你肯定会在棘手的 JS 面试中遇到。
服务
以下是一些免费和付费服务,旨在帮助您提高面试技巧和提升您的技术职业生涯。
-
Interview Cake ——Interview Cake 是一个内容详尽的编程面试和概念网站。虽然年度会员费可能有点贵,但如果你真心想深入学习基础知识,那绝对物有所值。他们还提供退款保证。
-
每日编程题- 每天免费向您发送一道编程题。如果您想在第二天收到答案,则需支付每月 8 美元。
-
Exercism——通过涵盖 48 种编程语言的 2629 个练习,以及我们热情友好的导师团队提供的深入探讨,提升您的编程技能。Exercism 完全免费,永久有效。
-
Codewars ——Codewars拥有数千道由社区成员创建的题目。你永远不会缺少练习题。这些题目按难度、概念和编程语言进行分类。
-
Codesignal——用户界面和用户体验都非常棒。我喜欢他们采用的游戏化和积分系统。
-
Irfan Baqui:轻松应对编程面试——每周免费练习一道题,下周即可获得答案
-
interviewing.io - 匿名与知名科技公司的工程师进行编程面试练习。
-
Pramp——与真正的工程师进行真实模拟面试。预约时间,与真人进行面试练习。
-
LeetCode - 从不断扩充的包含 190 多个问题的题库中选择题目,编写代码并提交你的解决方案,看看你是否正确解答了这些问题。
-
Coderbyte——提供大量编程挑战,免费畅玩10个,否则每月收费30美元。
-
HackerRank是一个非常流行的编程题练习平台。一些公司也使用 HackerRank 来评估候选人。
-
InterviewBit - 编程面试题练习。给我们时间,我们助您找到理想的工作。
-
Codility——成为更优秀的程序员。通过我们的课程提升您的编程技能。参与我们的挑战。
-
Codility 解决方案- 一位工程师对 codility.com 问题集的解答。
-
Testdome——获得认证,
向潜在雇主证明您的知识水平。在我们的公开测试中取得好成绩,即可获得免费的结业证书。 -
CodeEval - 看看你的水平与顶尖程序员相比如何。解锁超棒的创业公司工作和黑客专属机会。
-
Outco.io - 旧金山为期一个月的面试准备训练营
Javascript
-
amilajack/js-algorithms - 一个用 JavaScript 编写的算法集合
-
benoitvallon/computer-science-in-javascript - 用 JavaScript 重新实现计算机科学
-
lukehoban/es6features - ECMAScript 6 特性概述(21k+ star)
-
romyilano/Learning-JavaScript-Data-Structures-and-Algorithms - Loiane Groner 著《学习 JavaScript 数据结构与算法》的解答(书籍 pdf)
-
nzakas/computer-science-in-javascript - 用 JavaScript 编写的经典计算机科学范式、算法和方法的集合。
-
JacopoDaeli/algorithmic-challenges - 用 C、Python、Java 和 JavaScript 编写的算法挑战解决方案。
-
Hack Reactor 备考- 来自 Hack Reactor 的免费课程和练习题
-
JS:面试算法- JS:面试算法题及解答
PHP
-
适用于 PHP 7 的高效数据结构- 关于使用现代 PHP 实现数据结构的 Medium 文章
-
30秒PHP代码- 精选实用PHP代码片段,您可以在30秒或更短时间内理解。
-
PHP 中的 SOLID 原则- SOLID 代表了一系列指导原则,开发人员如果运用得当,可以简化和清晰地表达他们的代码。
-
PHP面向对象编程速成班- 涵盖PHP面向对象编程的基础知识,包括接口和抽象类之间的区别等棘手概念。
SQL
-
可汗学院 SQL 课程——涵盖 SQL 原理的优秀课程,强烈推荐。
-
Udemy MySQL Bootcamp - 由前 Galvanize 讲师授课。从入门到精通。
Laravel
Eloquent 性能模式- 学习如何通过将更多工作下放到数据库来大幅提高 Laravel 应用程序的性能,同时仍然使用 Eloquent ORM。
-
深入探索 Laravel —— @themsaid带你深入了解 Laravel 核心、包和技术。
-
Eloquent 进阶- 当然,你已经掌握了在应用程序中使用 Eloquent 的基本知识,但你真的了解其底层原理吗?
-
unicodeveloper/laravel-exam - 由@unicodeveloper精心策划的 Laravel 考试,题目涵盖从入门到专家的各个级别
Git
Webpack
- webpack:核心概念- 由核心团队成员带来的不到一小时的 webpack 基础知识课程
Python
来自 EdX 的Python 计算机科学与编程入门课程。
红宝石
- Haseeb-Qureshi/Algorithms-Study-Group - 由 App Academy 主办的 Ruby 算法学习小组
图书
-
amilajack/reading - 计算机科学阅读书目(附书籍PDF)
算法可视化
文章
-
Jeff Atwood,《如何招聘程序员》
-
Joel On Software,《游击面试指南》(第 3.0 版)
-
编程面试技巧,如何在不练习的情况下提高技术面试能力
更多问题
-
50 道编程面试题- “在这份指南中,我整理了 Byte by Byte 上所有我们曾经讲解过的面试题,并将其汇总成一个方便查阅的 PDF 文件。多年来,我一直精心挑选与面试直接相关的题目。这份指南将所有题目汇集于此,您可以免费下载。”
-
500 道数据结构与算法练习题及其解答——这些练习题按主题分类,例如数组、二叉搜索树、动态规划等,因此非常好。
-
欧拉计划——经典
-
面试题库精选——一份可以在面试中测试和评估的软件工程师技能或领域的清单
-
MaximAbramchuck/awesome-interview-questions - 一个精心挑选的面试问题列表。
技术博客
这与访谈略有相关。以下列出了一些刊登客座作者博客文章的公司。撰写博客并向他人传授知识是理解新知识、提升写作技巧、拓展人脉甚至赚钱的有效途径!如果您有一个面向新投稿人开放的技术博客,请提交 PR。
-
Scotch.io——多年来,它一直是我的首选网站开发教程网站。代码在冰块上运行。
-
Snipcart是一家专注于 Vue.js、电子商务、JavaScript 和 JAMstack 的公司。这里有一些非常棒的文章和代码示例。
-
JScrambler是一家对 JavaScript 教程感兴趣的公司。我为他们写了一篇关于使用 Vue.js 和 Vuelog 开发静态博客应用的文章。点击此处查看全文。
至理名言
查理·芒格是沃伦·巴菲特的合伙人,他为职业生涯提出了三条原则:
1) Don’t sell anything you wouldn’t buy yourself
2) Don’t work for anyone you don’t respect and admire
3) Work only with people you enjoy
我们还撰写了关于如何提高面试技巧的3种方法:
- 练习你的故事。
- 谈谈你的经验和优势。
- 做好调查研究。
寻找可以申请的公司
就业市场瞬息万变。公司扩张和收缩的速度都非常快。今天炙手可热的创业公司,明天可能就会裁员。以下链接可以帮助你找到合适的公司和职位。外面的世界很大,有时候需要付出努力才能找到属于自己的一席之地 :)
-
https://employbl.com/companies - Employbl 是一个湾区科技公司和初创企业的名录。您可以按类型或地点查找公司,上传简历,找到适合您的公司 :)
-
https://whoishiring.io/ - 我见过的最令人印象深刻的求职网站聚合平台。它抓取所有招聘网站的信息,并提供每家公司所在位置的地图。
-
https://huntr.co/ - 一款可以将你的申请和搜索记录整理在类似 Trello 看板上的工具。他们还提供 Chrome 扩展程序,可以快速添加来自各种渠道的职位。
-
https://breezy.hr - 我之前做招聘的时候用过这个网站。它其实是为人力资源部门设计的,不过也有Chrome扩展程序,可以用来添加联系人和具体对象。这样你就能记住后续跟进,还能找到志同道合的人。需要注意的是,你需要一个自定义邮箱地址,比如@your-domain.com。用Gmail账号注册是不行的。
-
https://betalist.com/jobs/collections - 按类别分组的公司和职位,例如女性领导的创业公司或区块链相关职位的去中心化工作。
-
https://github.com/connor11528/tech-companies-and-startups - 顺便宣传一下。我还有另一个仓库,里面收录了位于旧金山市中心的公司信息。数据以 CSV 文件格式提供,包含公司地址。
技术实习
我们分享了一些关于如何在湾区找到技术实习的技巧。说实话,我从未做过实习,但感觉竞争非常激烈。我认为寻找实习和寻找工作有很多相似之处,只是更需要关注截止日期和专门针对实习的职位。期待学习和分享更多关于湾区技术实习流程的信息。📈
原文发表于employbl.com
文章来源:https://dev.to/connor11528/tech-interview-prep-resources-for-software-engineers-561c


