软件工程师面试学习指南
作者:Ben Rogojan
为了帮助您跟踪进度,我们编制了一份综合清单,列出了下面列出的相同问题;该列表可以在这里找到。
经典热身
- Fizz Buzz
- 560.子阵列Sum Equals K.
- 数组:左旋转
- 字符串:制作字谜
- Nth Fibonacci
你怎么做的?花一点时间评价这些经典。在面试过程中的某些时候,我们已经被问过大部分这些问题 – 而且通常在早期就像清除风格问题一样。它们通常与算法和数据结构关系不大,但仍需要很好地理解循环和数组(是的,数组是数据结构)。
算法和数据结构
预研问题
在浏览有关数据结构和算法的视频内容之前,请考虑尝试以下这些问题。看看你是否可以回答它们。这将帮助您了解要关注的内容。
- 985.查询后偶数的和
- 657.机器人返回原点
- 961.尺寸为2N阵列的N重复元素
- 110.平衡二叉树
- 3.没有重复字符的最长子串
- 19.从列表末尾删除第N个节点
- 23.合并k排序列表
- 31.下一个排列
算法和数据结构视频
数据结构
- 数据结构和算法#1 —什么是数据结构? – – 视频
- 多暗淡—视频
- 动态阵列—视频
- 调整阵列大小—视频
- 数据结构:链接列表—视频
- 核心链接列表VS阵列—视频
- 指针指针—视频
- 数据结构:树木—视频
- 数据结构:堆—视频
- 数据结构:哈希表—视频
- 电话簿问题—视频
- 数据结构:堆栈和队列—视频
- 使用Stacks Last-In First-Out —视频
- 数据结构:速成价格计算机科学#14 —视频
- 数据结构:尝试—视频
算法
- 算法:图搜索,DFS和BFS —视频
- BFS(广度优先搜索)和DFS(深度优先搜索)—视频
- 算法:二进制搜索—视频
- 二进制搜索树评测—视频
- 面试的Python算法—视频
- 算法:递归—视频
- 算法:冒泡排序—视频
- 算法:合并排序—视频
- 算法:Quicksort —视频
大O符号
- 大O表示法和时间复杂性介绍(数据结构和算法#7)—视频
- 哈佛CS50 —渐近符号—视频
- 浅析算法复杂性分析— Post
- 备忘单—邮政
动态编程
- 动态编程(像程序员一样思考)—视频
- 算法:记忆和动态编程—视频
- 6.006:动态编程I:Fibonacci,最短路径—视频
- 6.006:动态编程II:文本对齐,二十一点—视频
- 动态编程—发布
字符串操作
- 编码面试问答:最长的连续角色—视频
- Sedgewick —子串搜索—视频
面试问题演练
- 谷歌编码访谈—通用价值树问题—视频
- 谷歌编码面试问题和答案#1:第一个重复出现的角色—视频
- 在二叉搜索树中查找min和max元素—视频
- 找到二叉树的高度—视频
- 检查二叉树是否为二进制搜索树—视频
- 什么是尾递归?为什么这么糟糕? – – 视频
研究后问题
既然你已经学习了一些,并观看了一些视频,让我们尝试更多的问题
- 更大更大
- 6. ZigZag转换
- 7.反向整数
- 40.组合总和II
- 43. Multiply Strings
- 拉里的阵列
- 短回文
- 65.有效数字
- 更大更大
- 完整计数排序
- 莉莉的作业
- 普通儿童
- 459.重复子串模式
- 27.删除元素
- 450.删除BST中的节点
- 659.将数组拆分为连续的子序列
- 具有有界最大值的子阵列数
- 组合总和IV
- 最佳购买和卖出冷却股票的时间
- 最长重复字符替换
- 成对交易所节点
- 二叉树右侧视图
- 展平嵌套列表迭代器
- 二叉树级别订单遍历
- 二叉搜索树迭代器
- 对链的最大长度
- 拆分部件中的链接列表
操作编程问题
有些公司不会问你算法问题。相反,他们可能更关注实施和运营问题。这些通常更为利基,涉及实际问题,如循环数据和执行某种任务。这些类型的问题通常不需要那么多练习,因为它更多的是采用数组和HashMaps等基本概念,并跟踪你对它们做了什么。
- 袋鼠问题
- 打破记录
- 找一个Stringiter
- 不知道
- 程序员的日子
- 排行榜
- 词序
- 夏洛克和Square
- 均衡数组
- 苹果和橘子
- 更多操作风格问题
系统设计视频
系统设计问题是表明您不仅仅是编码员的关键问题。你需要能够像工程师一样思考大局。某些服务属于哪里,您需要什么样的服务器,如何管理流量等等。所有这些想法都表明您能够设计软件,而不仅仅是人们告诉您代码的代码。
- 停车场系统—视频
- 应用程序—视频
- 优步设计—视频
- Instagram的—视频
- 火种服务—视频
操作系统
操作系统问题稍微少见,但是对线程,调度,内存等概念有充分的理解是好的,即使它只是一个基本的理解。得到一个进程和一个线程之间的差异而不知道答案是非常尴尬的。
- 常见问题操作系统访谈问题
- 什么是翻译后备缓冲区?
- 为什么Round Robin会避免优先级倒置问题?
- 中断与系统调用—文件系统中的“inode”是什么?
- 操作系统访谈问题与解答 – 第一部分
- 什么是内核—加里解释说
- 循环算法教程(CPU调度)
- LRU缓存的魔力(谷歌开发100天)—视频
- MIT 6.004 L15:内存层次结构—视频
- 中断—视频
- 调度—视频
主题
- 用户级线程与内核级线程
- 流程和主题简介—视频
- 流程与线程的区别—佐治亚理工学院—高级操作系统—视频
- 分叉和多线程之间的区别
面向对象
与操作系统类似,并非每次访谈都会询问有关面向对象编程的内容,但您永远不会知道。您想确保从计算机162价格中记住您的基础知识。
- Java编程教程— 49 —继承—视频
- Java编程教程— 55 —多态性介绍—视频
- Java编程教程— 58 —抽象和具体类—视频
- Java编程教程— 57 —覆盖规则—视频
- Java编程教程— 59 —保持对象的类
- 面向对象编程—视频
设计模式
如果你像我们一样,我们没有被告知所有各种设计模式。因此,了解它们的工作原理以及使用它们的原因是很好的。一些面试问题可以简单,“你为什么要使用工厂级?”
- 工厂设计模式—视频
- 观察者设计模式—视频
- 适配器设计模式—视频
- 立面设计模式—视频
- 责任链设计模式—视频
- 口译员设计模式—视频
- 单身设计模式教程—视频
- 第6章(第1部分)—模式(视频)—视频
- 首先设计模式—视频
SQL
这是最后一节。很多人可能不会被问到很多SQL问题。但是,我一直认为放在后面的口袋里很好。
SQL问题—
- 262.旅行和用户
- 601.体育场的人流量
- 185.部门三大薪水
- 626.交易所席位
- 黑客rank报告
- 177. Nth最高薪水
- 对称对
- OccupationsPlacements
- 奥利凡德的股票
SQL —影片
- IQ15:6 SQL查询面试问题—视频
- 了解ROW_NUMBER和分析函数—视频
- 分析函数的高级实现—视频
- 分析函数的高级实现第2部分—视频
- 智能猫头鹰SQL视频—视频
发布SQL问题
- 二进制树节点
- 天气观测站18
- ChallengesPrint Prime数字
- 595.大国
- 626.交易所席位
- SQL面试问题:3次技术筛选练习(适用于数据分析师)
面试可能很艰难,因为你可能觉得自己没有进步。拥有本学习指南将帮助您跟踪进度并更好地了解您的工作方式
祝好运
此外,如果您希望阅读/观看更多精彩的帖子或视频:
在SaturnCloud上使用Jupyter笔记本连接到大查询第2部分
Hadoop与关系数据库
算法如何变得不道德和有偏见
如何改进数据驱动策略
如何开发鲁棒算法
4必须掌握数据科学家的技能
SQL最佳实践 – 设计ETL视频