# Technical Interview Prep
Here are the sections:
* [How to Succeed in Data Structures and Algorithms Interview](#how-to-succeed-in-data-structures-and-algorithms-interview)
* [Algorithms](#algorithms)
* [Data Structures](#data-structures)
* [Curated LeetCode Questions](#curated-leetcode-questions)
* [AlgoExpert](#algoexpert)
* [Software Engineering](#software-engineering)
* [System Design](#system-design)
These are the best online resources that I used while preparing for technical coding interviews:
* [Cracking The Coding Interview](http://www.crackingthecodinginterview.com/): The most popular book on the whole tech interview process, now in 6th edition. 189 programming interview questions are included, ranging from the basics to the trickiest algorithm problems.
* [Elements of Programming Interviews](http://elementsofprogramminginterviews.com/): Another great book written by professional software engineers, with different versions in C++, Java and Python.
* [HackerRank](https://www.hackerrank.com/): A technical recruiting platform that assesses developers based on actual coding skills.
* [Pramp](https://www.pramp.com/): A free online peer-to-peer platform for practicing technical interviews.
* [LeetCode](https://leetcode.com/): One of the best online resource providing a rich library of more than 300 real coding interview questions with 7 supported languages - C, C++, Java, Python, C#, JavaScript, Ruby.
* [Interview Cake](https://www.interviewcake.com/): Another site that preps software engineering candidates for coding interview.
* [AlgoExpert](https://www.algoexpert.io/product): The ultimate resource to prepare for coding interviews. Everything you need, in one streamlined platform.
* [Software Engineering Interview Preparation](https://orrsella.gitbooks.io/soft-eng-interview-prep/content/): All the required theoretical material needed to pass a Facebook/Google software engineering interview.
## How to Succeed in Data Structures and Algorithms Interview
To practice your algorithmic coding, review [this interview preparation document](https://workera.ai/candidates/interview_prep/#h.skj5ir89g0z3).
* [Preparation](#preparation)
* [Understand the Problem](#understand-the-problem)
* [Brute Force Solution](#brute-force-solution)
* [Optimize Your Solution](#optimize-your-solution)
* [Code Your Solution](#code-your-solution)
* [Test Your Solution](#test-your-solution)
### Preparation
* **Develop a deep knowledge of data structures**: You should understand and be able to talk about different data structures and their strengths, weaknesses, and how they compare to each other. Taking the time to implement data structures from scratch will leave you much better prepared for DS&A interviews, than studying them as an abstract concept.
* **Understand Big O notation**: You should be able to talk about Big O notation for both time and space complexity. Make sure to read about common algorithms and their memory and runtime complexity to train your big O analysis muscle.
* **Know the major sorting algorithms**: Given that differences in time and space complexity can derail your optimal solution for an algorithm problem, it’s good to be familiar with the major algorithms per category (string matching, sorting, search, graph, traversal, etc).
[back to current section](#how-to-succeed-in-data-structures-and-algorithms-interview)
### Understand the Problem
* To verify your understanding, repeat the question back to the interviewer in your own words to make sure you got it correctly. There’s nothing worse than realizing mid-interview that you’re answering a completely different question. It could be helpful to use a test or two to verify your understanding of the problem.
* You should feel comfortable asking your interviewer questions to define any ambiguities and ask them if you can make certain assumptions (e.g. “Can I assume the array is sorted?” or “Can I assume the input is valid?”). Remember that the interviewer’s goal is to get a good signal for how you think through an issue or problem.
* You may consider asking them the following questions:
- How large is the range of values? What kind of values exists?
- How large is the size of the input? Are there duplicates within the input?
- What are some extreme cases of inputs?
- How is the input stored?
* You should also ask whether you’ll eventually be optimizing for time, space, or both. Even if you believe you already know how to solve the problem, it’s important to ensure that you’re spending your time implementing the solution that your interviewer cares about.
* Keep track of how much time you’re spending in the ideation phase to leave yourself enough time to code your solution.
[back to current section](#how-to-succeed-in-data-structures-and-algorithms-interview)
### Brute Force Solution
* The worst outcome in a technical interview is to not write any code, and the easiest way to end up in that position is to overcomplicate the problem early in the interview.
* Instead, talk through a solution you’re confident will work and let your interviewer know about the concessions you’ve made. You might think that if you present an initial suboptimal solution that you’ll never get hired, but this isn’t true. Communication is important here. You can score points with your interviewer by explaining the time and space complexity of your naive or brute-force solution and by clarifying why it’s suboptimal; you’ll have the chance to improve it later.
* Now that you’ve talked through the brute-force solution, ask the interviewer whether they’d like you to implement the brute force solution or come up with a more efficient solution. If the former, skip the next section “Optimize your Solution” and come back to it at the end. Only start coding once you and your interviewer have agreed on an approach and they’ve given you the green light to move ahead.
[back to current section](#how-to-succeed-in-data-structures-and-algorithms-interview)
### Optimize Your Solution
* Discuss your approach with your interviewer and lean on them to get a sense of whether they have a preference for whether you optimize for time, space, or both. When optimizing, some of your initial assumptions may change, so it’s important to check with your interviewer.
* You may see the most optimal solution right away or be unsure on how to proceed. If you’re stuck, here are some common approaches to optimizing:
- Take a second look at the problem, its constraints, and write down your assumptions and possible simplifications.
- Consider similar problems you’ve seen and discuss them with your interviewer.
- Solve an example by hand and extrapolate about what algorithm(s) could be used.
- Simulate the brute-force solution by hand and identify the inefficiencies that could be optimized with a data structure.
- Solve a simple version of the problem first, then build on it.
* Don’t forget to communicate and analyze the time or space complexity of the solution you plan to optimize. Once you and your interviewer agree that you have a good solution, it’s time to code it.
[back to current section](#how-to-succeed-in-data-structures-and-algorithms-interview)
### Code Your Solution
* As an interviewee, it’s important to ensure that your interviewer understands what you’re doing and why you’re doing it in real-time. If you’re explaining your thought process out loud and you take a wrong turn, your interviewer may offer you a hint to get you back on track.
* While you’re coding, don’t read your code verbatim; but rather, talk about the section of the code you’re implementing at a higher level. Explain why you wrote it that way and what it’s trying to achieve.
* Remember that your interviewer needs to be able to understand your code to efficiently evaluate whether your code returns the expected result and solves the problem. As you code, keep these pointers in mind:
-
没有合适的资源?快使用搜索试试~ 我知道了~
These are coding solutions for problems I study while prep.zip
共1010个文件
cpp:863个
py:67个
txt:15个
需积分: 5 0 下载量 156 浏览量
2024-02-04
10:59:15
上传
评论
收藏 2.99MB ZIP 举报
温馨提示
These are coding solutions for problems I study while prep
资源推荐
资源详情
资源评论
收起资源包目录
These are coding solutions for problems I study while prep.zip (1010个子文件)
1-1 34KB
1-3 34KB
1-4 14KB
1-5 15KB
1-8 15KB
13-1 65KB
13-2 34KB
13-3 17KB
13-4 15KB
13-9 15KB
2-1 29KB
2-2 15KB
2-3 15KB
3-1 15KB
3-2 41KB
3-5 41KB
3-6 41KB
4-1 9KB
4-3 15KB
4-6 9KB
4-7 9KB
8-1 15KB
8-3 31KB
8-4 35KB
9-1 15KB
9-3 9KB
9-5 28KB
Most-Stones-Removed-with-Same-Row-or-Column.cp 901B
Find-Duplicate-Files.cpp 10KB
Word-Cloud-Data.cpp 7KB
Create-Maximum-Number.cpp 6KB
Basic-Calculator-IV.cpp 6KB
Mesh-Message.cpp 5KB
Tag-Validator.cpp 5KB
Contain-Virus.cpp 5KB
The-Cake-Thief.cpp 5KB
Parse-Lisp-Expression.cpp 4KB
BST-Checker.cpp 4KB
2nd-Largest-Item-in-BST.cpp 4KB
Additive-Number.cpp 4KB
Rectangular-Love.cpp 4KB
Remove-Comments.cpp 4KB
Quad-Tree-Intersection.cpp 4KB
Design-Linked-List.cpp 4KB
Kth-to-Last-Node-Singly-Linked-List.cpp 4KB
9-1.cpp 4KB
Million-Gazillion.cpp 4KB
Strong-Password-Checker.cpp 4KB
Design-Twitter.cpp 4KB
Balanced-Binary-Tree.cpp 4KB
The-Skyline-Problem.cpp 4KB
Course-Schedule.cpp 4KB
Merge-Sorted-Arrays.cpp 4KB
Word-Search.cpp 4KB
21-8.cpp 4KB
3Sum.cpp 3KB
island-count.cpp 3KB
Kth-Smallest-in-Lexicographical-Order.cpp 3KB
Contains-Duplicate-III.cpp 3KB
Queue-Two-Stacks.cpp 3KB
House-Robber.cpp 3KB
Copy-List-Random-Pointer.cpp 3KB
Data-Stream-as-Disjoint-Intervals.cpp 3KB
Graph-Coloring.cpp 3KB
Find-Rotation-Point.cpp 3KB
10-12.cpp 3KB
13-3.cpp 3KB
Kth-Largest-Element-In-Array.cpp 3KB
Perfect-Rectangle.cpp 3KB
Find-Repeat-Space-Edition.cpp 3KB
21-15.cpp 3KB
Minesweeper.cpp 3KB
Implement-Queue-Two-Stacks.cpp 3KB
Validate-IP-Address.cpp 3KB
8-3.cpp 3KB
Delete-Node.cpp 3KB
Basic-Calculator-II.cpp 3KB
Design-Circular-Deque.cpp 3KB
Champagne-Tower.cpp 3KB
Triangle.cpp 3KB
Evaluate-Division.cpp 3KB
Masking-Personal-Information.cpp 3KB
13-2.cpp 3KB
21-7.cpp 3KB
Design-Circular-Queue.cpp 3KB
Vowel-Spellchecker.cpp 3KB
Number-of-Atoms.cpp 3KB
19-4.cpp 3KB
Valid-Binary-Search-Tree.cpp 3KB
k-messed-array-sort.cpp 3KB
Palindrome-Pairs.cpp 3KB
binary-search-ice-cream-parlor.cpp 3KB
array-index-element-equality.cpp 3KB
Accounts-Merge.cpp 3KB
All-O'-one-Data-Structure.cpp 3KB
Fraction-To-Recurring-Decimal.cpp 3KB
Open-The-Lock.cpp 3KB
Largest-Divisible-Subset.cpp 3KB
Single-Riffle-Shuffle.cpp 3KB
Snakes-and-Ladders.cpp 3KB
共 1010 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
码农阿豪
- 粉丝: 1w+
- 资源: 1754
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功