跟读练习: The BEST Coding Interview Roadmap in 2023 (free) - 通过视频学习英语口语
正在创建课程...
1
So I created a leak code roadmap and made it free for everyone.
2
But before I show you, make sure to like and subscribe.
3
Nevermind, let me just show you.
4
It's sort of like a non -linear video game where you kind of have options of
5
which order you want to complete each topic in.
6
Except, of course, this is leak code, so it's definitely not going to be as fun.
7
But the reason I made this is that I've kind of had a visual map of this in my head.
8
I kind of know the relationship between these topics.
9
Like, for example, linked lists are kind of your introduction to graphs, where you have nodes and edges, and then right after that you learn about trees.
10
Most people will learn this in a computer science course.
11
But there's definitely a lot of topics here you probably won't learn in class, things like tries, which naturally come after trees.
12
But remember that trees also cover binary trees, and before you learn about binary trees, I think it makes sense to learn about binary search
13
because it's kind of the same algorithm that you use binary trees for.
14
I've been wanting to make this for a very long time, but I just finally had time during the holidays.
15
It feels good to have a visualization for my thoughts, but I think also this will help a lot of people.
16
Whether you're a beginner being introduced to these topics, the first topic is arrays and hashing.
17
You don't really need to know a lot of data structures and algorithms to solve this topic.
18
You just need to have programming knowledge about loops and conditionals
19
and of course basic data structures like arrays and hash maps
20
but you don't really need to know how they're implemented
21
and after that you learn more complicated things but you do
22
so in a very structured way and
23
if you're completely brand new to data structures
24
and algorithms you can always check out my courses
25
and get lifetime access to them we recently started adding articles
26
to complement all of the video solutions that's my short little plug but moving on, I consider most of this map pretty objective.
27
I think most people would agree that two -pointers should come before binary search, because binary search is sort of a specialization of two -pointers.
28
The same thing could be said about sliding window, and similarly linked list, a lot of these linked list problems require two -pointers,
29
so I think it makes sense to learn two -pointers before that.
30
And of course, trees should come before linked lists.
31
It's a more complicated version of a linked list.
32
And then right after trees, things get pretty open ended.
33
Like I said, we have tries, but we also have heaps, which are a specialization of binary trees.
34
They are also a bit more complicated, I think.
35
And we also have backtracking, which I think makes a lot of sense to learn after trees, because backtracking is essentially just a big decision tree.
36
Like looking at one of these thumbnails, you can kind of see it here backtracking problems are naturally suited to trees, at least in terms of visualization.
37
And then after backtracking things get even more open -ended, we move on to graphs, which we already kind of learned about with trees and linked lists.
38
And many graph problems require recursive backtracking, usually depth -first search, so I think it makes sense to do it in this order.
39
Also, we have one -dimensional dynamic programming.
40
Dynamic programming is kind of a specialization of backtracking where you add caching and then, you know, there's the true dynamic programming solution,
41
which looks a bit more concise, something like this.
42
And that usually doesn't involve recursion, but I still think learning backtracking and getting good at it before tackling dynamic programming will make it a lot easier.
43
And the reason I have two -dimensional dynamic programming after graphs,
44
of course, we have it after one -dimensional dynamic programming because two -dimensional dynamic programming problems typically involve graphs.
45
I think unique paths is one that does involve like a two -dimensional graph, longest increasing path in a matrix.
46
You can imagine that's also going to be related to graphs.
47
But we also have advanced graphs, which are kind of more academic related algorithms.
48
Things like Dijkstra's algorithm with network delay time, you'll need a Dijkstra's algorithm.
49
And that algorithm also involves a heap.
50
It's the shortest path algorithm.
51
So it makes sense to have advanced graphs come after the
52
heaps category at this point i'm sure you're starting to get
53
an idea of what i'm talking about all these topics are related to each other
54
and learning it in that way can kind of help you solve individual problems
55
if you couldn't solve a problem in one of these complicated
56
categories there might be a reason for it might be
57
because you're lacking in one of the more simple categories
58
and it can be very difficult to figure that out
59
because as you're just going through a single big list of leak code problems in a random order, you don't really know that.
60
It's hard to figure out what you're good at and what you're not good at, and what you might need to practice more on.
61
And some of these, I will admit, are a bit opinionated.
62
Things like intervals.
63
Why would you need to learn intervals after you learn about heaps?
64
Well, there's not necessarily a good reason, though interval problems typically require sorting, which is different from heap sorting.
65
But the main reason I put this here after heaps is because, first of all, intervals are probably a bit less important than heap problems,
66
but also because one of these problems does require a heap but most of them don't.
67
So you could, you know, make an argument that some of this list could be a little bit different.
68
You could say the same thing about these greedy problems.
69
Definitely not all of these greedy problems will require a heap.
70
I think most of them will not.
71
But still, I think greedy problems are less important than heap problems.
72
Then last couple ones, we have bit manipulation.
73
Again, I put this after two -dimensional or one -dimensional dynamic programming because one of these I think does involve dynamic programming.
74
But other than that, there's no reason that you should learn bit manipulation after dynamic programming.
75
But I do think it's generally less important than dynamic programming, so it makes sense.
76
And math and geometry, though, I think this one makes a bit more sense because you should learn this after you learn graphs, because a lot of these are related to matrices.
77
And some of these also do involve bit manipulation.
78
I think these three do.
79
But I guess if I wanted to make this map as accurate as possible, instead of having a topic like arrays and hashing, and then right after that,
80
we have new topics like two -pointers.
81
Does it really make sense for somebody to have to solve all of these problems, even some of the more difficult ones, before moving on to some easy two -pointer problems?
82
Like some of these are pretty easy.
83
I would argue definitely not.
84
So I'm also thinking about creating a new version of this graph that's much more detailed.
85
Like essentially we'll have multiple nodes for two -pointers.
86
We'll have multiple blocks and maybe one of them will be the easy two -pointer block
87
and then after that you can solve easy binary search problems.
88
And then maybe after that, you can solve medium two -pointer problems.
89
But if I did that, you can tell that this graph would have been ginormous.
90
It's already pretty big.
91
So I wanted to first start out with like a simple version.
92
But if people are interested in me creating a more complex one, that's a bit more granular, I'm happy to do that.
93
But can you believe that this is free?
94
Every single one of these, when you open it up, it has a list of problems.
95
Every single one of these problems has a video solution that I created on YouTube.
96
It also has code in multiple languages not just python
97
but java javascript and c plus plus we're working on adding even more than
98
that feel free to contribute on github i also added a
99
few more quality of life features things like being able to
100
sort by the problem name also by the difficulty things
101
that people have been asking for a long time you can also star problems some people were asking for
102
that so feel free to you know star all the problems you want also you have to admit
103
that it's kind of neat that this is a graph when we're learning about data structures and algorithms which, you know, graphs, you know, you know what I'm talking about.
104
And, you know, you can play around with this.
105
You can enable dragging, which will let you kind of move these around.
106
But, you know, if you do that and you let go of it, it's going to end up opening the panel.
107
Sorry if that's annoying.
108
And yeah, I mean, did I mention that this is completely free?
109
So definitely try it out.
110
If you want to do me a favor, tell everyone, you know, your friends, your parents, your girlfriend, oh wait, your dog.
111
Tell everyone.
112
And especially, please, please tell me any feedback you have, any suggestions i literally read everything i don't always have time to respond
113
and i don't always have time to actually implement the suggestions
114
but i read every single one i literally obsess over making the site better
115
and providing more value to people i'm really looking forward to
116
what you guys have to say oh god somebody turned
117
that light theme off i don't even know why i implemented
118
that but thank you so much for watching hopefully i'll see you pretty soon.
📺 同频道
✨ 推荐视频
本课的词汇与口语要点
这节 C1 级别的口语课以视频“The BEST Coding Interview Roadmap in 2023”为素材。 视频中反复出现的词有:graph, tree, learn, programming, dynamic。 这段视频共有 118 个句子、1686 个单词可供跟读。 讲话部分时长为 8:20。 说话人语速较快,每分钟约 202 个词,会出现较多连读和弱读。 只有 81% 的单词属于英语最常用的 3,000 词,词汇难度较高。
视频中的重点词汇
视频中最难的 15 个单词,附发音和释义:
| 单词 | 发音 | 释义 |
|---|---|---|
| graph 名词 | /ɡɹæf/ | 圖表 /图表 |
| pointer 名词 | /ˈpɔɪn.təɹ/ | 教鞭 |
| algorithm 名词 | /ˈælɡəɹɪðm̩/ | 算法, 演算法 |
| binary 形容词 | /ˈbaɪ.nə.ɹi/ | 二進 /二进 |
| dimensional 形容词 | /daɪˈmɛn.ʃə.nəl/ | 維的 /维的 |
| interval 名词 | /ˈɪntɚvəl/ | 間隔 /间隔, 間隙 /间隙 |
| hash 名词 | /ˈhæʃ/ | 井號 /井号, 井字 |
| greedy 形容词 | /ˈɡɹiːdi/ | 貪婪的 /贪婪的, 貪心的 /贪心的 |
| manipulation 名词 | /məˌnɪp.juˈleɪ.ʃən/ | 操縱 /操纵, 運用 /运用 |
| leak 名词 | /liːk/ | 漏洞 |
| visualization 名词 | /ˌvɪʒ.ʊ.ə.laɪˈzeɪ.ʃən/ | 可視化 /可视化, 視覺化 /视觉化 |
| node 名词 | /noʊd/ | 結節 /结节 |
| concise 形容词 | /kənˈsaɪs/ | 簡明 /简明 |
| obsess 动词 | /əbˈsɛs/ | 迷住, 著魔 |
| opinionated 形容词 | /əˈpɪn.jə.neɪ.tɪd/ | 有主見的 /有主见的 |
视频中出现的短语动词
| 单词 | 释义 |
|---|---|
| check out 动词 | 退房 |
| end up 动词 | 到达 |
| figure out 动词 | 弄清楚 |
| go through 动词 | 通過 /通过 |
| look forward to 动词 | 期待, 向往 |
视频中的语法
说话人最常用的结构,并附上视频中的原话:
| 结构 | 视频中的用法 |
|---|---|
| 现在完成进行时 have/has been + -ing — 以前开始、现在仍在继续的动作 | I've been wanting · have been asking |
| 被动语态 be + 过去分词 — 强调发生了什么,而不是谁做的 | being introduced · could be said · be related |
| 定语从句 who / which + 从句 — 补充说明人或事物 | heaps, which are · graphs, which are · sorting, which is |
需要注意的发音
说话人用了 32 次缩略和弱读形式,例如 don't, you're, I'm。请按听到的简短形式来说。
- “th” 音: algorithm /ˈælɡəɹɪðm̩/, thumbnail /ˈθʌm.neɪl/
- “sh” 和 “zh” 音: dimensional /daɪˈmɛn.ʃə.nəl/, specialization [ˌspɛʃəlaɪ̯ˈzeɪ̯ʃn̩], hash /ˈhæʃ/, manipulation /məˌnɪp.juˈleɪ.ʃən/, visualization /ˌvɪʒ.ʊ.ə.laɪˈzeɪ.ʃən/
- 长单词——注意重音位置: dimensional /daɪˈmɛn.ʃə.nəl/, specialization [ˌspɛʃəlaɪ̯ˈzeɪ̯ʃn̩], manipulation /məˌnɪp.juˈleɪ.ʃən/, visualization /ˌvɪʒ.ʊ.ə.laɪˈzeɪ.ʃən/, opinionated /əˈpɪn.jə.neɪ.tɪd/
如何用这段视频练习
- 先完整听一遍视频,不要开口,记下不认识的单词。
- 先用 0.75 倍速逐句跟读,熟练之后再回到正常速度。
- 录下自己的声音并与原声对比,特别注意 graph, pointer, algorithm 这类单词。
什么是跟读法?
跟读法 (Shadowing) 是一种有科学依据的语言学习技巧,最初开发用于专业口译员的培训,并由多语言者Alexander Arguelles博士普及。这个方法简单而强大:您在听英语母语原声的同时立即大声重复——就像是一个延迟1-2秒紧跟说话者的影子。与被动听力或语法练习不同,跟读法强迫您的大脑和口腔肌肉同时处理并模仿真实的讲话模式。研究表明它能显着提高发音准确性,语调,节奏,连读,听力理解和口语流利度——使其成为雅思口语备考和真实英语交流最有效的方法之一。














