mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2024-12-27 12:56:17 +00:00
Merge branch 'main' of github.com:chefyuan/algorithm-base
This commit is contained in:
commit
b983af03f7
@ -64,7 +64,7 @@
|
|||||||
|
|
||||||
喜欢篮球的哥们可以关注一波。
|
喜欢篮球的哥们可以关注一波。
|
||||||
|
|
||||||
KBT篮球训练营
|
KBT 篮球训练营
|
||||||
|
|
||||||
这不和喵哥约了国庆节决一死战,我俩每天都在群里说一些垃圾话,都觉得能把对方打爆。不能光吹牛批不干活,所以咱们得把训练安排上。一位干货满满的 UP ,为你指出平常没有注意到的细节。都是很实用的动作,打喵哥应该足够了。
|
这不和喵哥约了国庆节决一死战,我俩每天都在群里说一些垃圾话,都觉得能把对方打爆。不能光吹牛批不干活,所以咱们得把训练安排上。一位干货满满的 UP ,为你指出平常没有注意到的细节。都是很实用的动作,打喵哥应该足够了。
|
||||||
|
|
||||||
|
@ -1,69 +1,101 @@
|
|||||||
### 背景
|
### 背景
|
||||||
某中上985传统工科本硕,本科期间只上过大学生程序设计和微机原理两门计算机相关的公共基础课,研一开始准备转行,恰好研一暑假因为疫情无法返校,遂背着老师投递了华为中央软件院的暑期实习(非应届投递暑期实习是有风险的),华为对计算机基础要求比较低,对学历背景较好的非科班同学比较友好。研二暑假通过了百度,字节,阿里,腾讯,美团,携程的后端开发岗实习,去了阿里淘系实习,秋招目前收获阿里,字节,拼多多,美团,网易意向书,腾讯,华为,米哈游录用排序中。在春秋招的面试基本没有挂过。
|
|
||||||
|
某中上 985 传统工科本硕,本科期间只上过大学生程序设计和微机原理两门计算机相关的公共基础课,研一开始准备转行,恰好研一暑假因为疫情无法返校,遂背着老师投递了华为中央软件院的暑期实习(非应届投递暑期实习是有风险的),华为对计算机基础要求比较低,对学历背景较好的非科班同学比较友好。研二暑假通过了百度,字节,阿里,腾讯,美团,携程的后端开发岗实习,去了阿里淘系实习,秋招目前收获阿里,字节,拼多多,美团,网易意向书,腾讯,华为,米哈游录用排序中。在春秋招的面试基本没有挂过。
|
||||||
|
|
||||||
### 个人心得
|
### 个人心得
|
||||||
|
|
||||||
#### 基础知识:
|
#### 基础知识:
|
||||||
- **基础知识是非科班和科班区别很大的一部分**。科班有一整套系统的计算机学科培养体系。我在准备基础的时候是按照考研课程进行系统学习的。考研的基础课程能让你很大程度地接近科班学生的基础。推荐b站的王道考研课程,可以二倍速快速过一遍,配合讲义标注一些重点,日后可以反复观看。这些基础不仅能方便日后学习编程语言和扩展知识时的理解,在秋招面试中也经常会涉及。
|
|
||||||
- **这里重点提一下算法** 算法和数据结构课程中涉及的知识都是非常基础的,一定要熟稔于心。在这个基础上可以刷leetcode题来提升自己的能力。通常刚开始刷会有一些曲折,比如遇到的题经常不会,然后一道题写大半天。我一般遇到不会的题超过10分钟没思路就会看题解,然后按题解的思路再尝试自己写出来。如果实在写不出来就照着题解自己敲一遍,仔细领会每一句代码的意图。然后再做标记,第二天或者过几天我会再尝试自己写一遍。重复几遍就会了,这样至少能保证你刷到过的题你都能掌握。刷题顺序的话,推荐按分类刷。我个人用的大力出奇迹,直接按题号顺序刷,但是一开始刷的会有点吃力。另外的话可以刷一刷每日一题和周赛。春招前我大概刷了600+的题,周赛全国排名3000+。
|
- **基础知识是非科班和科班区别很大的一部分**。科班有一整套系统的计算机学科培养体系。我在准备基础的时候是按照考研课程进行系统学习的。考研的基础课程能让你很大程度地接近科班学生的基础。推荐 b 站的王道考研课程,可以二倍速快速过一遍,配合讲义标注一些重点,日后可以反复观看。这些基础不仅能方便日后学习编程语言和扩展知识时的理解,在秋招面试中也经常会涉及。
|
||||||
|
- **这里重点提一下算法** 算法和数据结构课程中涉及的知识都是非常基础的,一定要熟稔于心。在这个基础上可以刷 leetcode 题来提升自己的能力。通常刚开始刷会有一些曲折,比如遇到的题经常不会,然后一道题写大半天。我一般遇到不会的题超过 10 分钟没思路就会看题解,然后按题解的思路再尝试自己写出来。如果实在写不出来就照着题解自己敲一遍,仔细领会每一句代码的意图。然后再做标记,第二天或者过几天我会再尝试自己写一遍。重复几遍就会了,这样至少能保证你刷到过的题你都能掌握。刷题顺序的话,推荐按分类刷。我个人用的大力出奇迹,直接按题号顺序刷,但是一开始刷的会有点吃力。另外的话可以刷一刷每日一题和周赛。春招前我大概刷了 600+的题,周赛全国排名 3000+。
|
||||||
- ![](https://img-blog.csdnimg.cn/6a51c04e6bd24367a4e0b40a2e4d9a4e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQ2hpbmVzaXNjaGd1eQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
|
- ![](https://img-blog.csdnimg.cn/6a51c04e6bd24367a4e0b40a2e4d9a4e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQ2hpbmVzaXNjaGd1eQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
|
||||||
|
|
||||||
#### 编程语言
|
#### 编程语言
|
||||||
C++和C语言其实很像。上述算法与数据结构课程的或者说理工科学校应该都会有的程序设计类的基础课都会教一些C语言的基础。在这些基础上,看下列书应该就足够了。下面的书我基本上都看过一遍或者挑章节看过,受益匪浅。当然,语言还是要多用多写,可以通过刷题和项目来反复巩固和记忆。
|
|
||||||
|
C++和 C 语言其实很像。上述算法与数据结构课程的或者说理工科学校应该都会有的程序设计类的基础课都会教一些 C 语言的基础。在这些基础上,看下列书应该就足够了。下面的书我基本上都看过一遍或者挑章节看过,受益匪浅。当然,语言还是要多用多写,可以通过刷题和项目来反复巩固和记忆。
|
||||||
|
|
||||||
##### 书籍推荐
|
##### 书籍推荐
|
||||||
|
|
||||||
- 《C++primier》第五版,比较厚,但是很全面,可以慢慢看
|
- 《C++primier》第五版,比较厚,但是很全面,可以慢慢看
|
||||||
- 《STL源码剖析》,可以配合b站侯捷的视频一起食用,讲得非常好。
|
- 《STL 源码剖析》,可以配合 b 站侯捷的视频一起食用,讲得非常好。
|
||||||
- 《深入理解C++对象模型》,看前几章应该就够了
|
- 《深入理解 C++对象模型》,看前几章应该就够了
|
||||||
- 《Effective C++》,个人感觉书上的知识点有些陈旧
|
- 《Effective C++》,个人感觉书上的知识点有些陈旧
|
||||||
- 《Modern Effective C++》,有C++11新特性
|
- 《Modern Effective C++》,有 C++11 新特性
|
||||||
- 《C++并发编程实战》,学习并发的基础知识就够了,书在实现上用的C++11多线程,但在实际的开发中使用的大多是posix多线程。
|
- 《C++并发编程实战》,学习并发的基础知识就够了,书在实现上用的 C++11 多线程,但在实际的开发中使用的大多是 posix 多线程。
|
||||||
|
|
||||||
##### C++岗位的选择
|
##### C++岗位的选择
|
||||||
C++的岗位相比与java会相对少一些的。java拥有更好的生态,使得它在业务开发上可以更灵活和方便,不过校招一般不会对语言做限制。如果大家在秋招中想继续从事c++相关的开发,那可以留意一下以下C++岗位。可以去看看官网对应的JD,然后对自己感兴趣的岗位做针对性的查漏补缺:
|
|
||||||
- 游戏服务端和客户端:网易互娱和雷火、米哈游、腾讯IEG
|
C++的岗位相比与 java 会相对少一些的。java 拥有更好的生态,使得它在业务开发上可以更灵活和方便,不过校招一般不会对语言做限制。如果大家在秋招中想继续从事 c++相关的开发,那可以留意一下以下 C++岗位。可以去看看官网对应的 JD,然后对自己感兴趣的岗位做针对性的查漏补缺:
|
||||||
- 推荐和搜索引擎:阿里和pdd两家java为主的大厂,在这块用的都是C++
|
|
||||||
- 机器人、自动驾驶开发:无人驾驶企业,华为车BU
|
- 游戏服务端和客户端:网易互娱和雷火、米哈游、腾讯 IEG
|
||||||
- 音视频流开发,比如B站
|
- 推荐和搜索引擎:阿里和 pdd 两家 java 为主的大厂,在这块用的都是 C++
|
||||||
- 用C++比较多的互联网企业:腾讯和百度
|
- 机器人、自动驾驶开发:无人驾驶企业,华为车 BU
|
||||||
|
- 音视频流开发,比如 B 站
|
||||||
|
- 用 C++比较多的互联网企业:腾讯和百度
|
||||||
|
|
||||||
#### 扩展知识
|
#### 扩展知识
|
||||||
|
|
||||||
这个部分我就介绍以下自己看得一些视频和书,给大家做参考。
|
这个部分我就介绍以下自己看得一些视频和书,给大家做参考。
|
||||||
|
|
||||||
##### linux
|
##### linux
|
||||||
linux是后端开发工程师必知必会的操作系统,而且要对底层原理有详细的了解。
|
|
||||||
- 《深入理解Linux内核》可以结合操作系统课程对照着来看,有些部分在实际实现上和操作系统课程所讲的有些出入。
|
linux 是后端开发工程师必知必会的操作系统,而且要对底层原理有详细的了解。
|
||||||
- 《UNIX环境高级编程》 堪称圣经的APUE,介绍的是unix系统的基本原理和系统调用,可以说是必看。觉得书太厚了看不下的推荐一个B站的[课程](https://b23.tv/YjZyNv),讲得非常好,可以跳过前面数据结构的部分直接看后面的。
|
|
||||||
- 《UNIX网络编程》介绍了UNIX网络方面的原理和调用方法,是对APUE的扩充。如果这本书看不下去的可以直接看下面这本。
|
- 《深入理解 Linux 内核》可以结合操作系统课程对照着来看,有些部分在实际实现上和操作系统课程所讲的有些出入。
|
||||||
- 《Linux多线程服务端编程:使用muduo C++网络库》介绍了如何使用C++开发高性能服务器,这本书个人认为写的非常好,我也是照着这本书写了自己的服务器的项目。
|
- 《UNIX 环境高级编程》 堪称圣经的 APUE,介绍的是 unix 系统的基本原理和系统调用,可以说是必看。觉得书太厚了看不下的推荐一个 B 站的[课程](https://b23.tv/YjZyNv),讲得非常好,可以跳过前面数据结构的部分直接看后面的。
|
||||||
- man手册,可以直接在命令行查看系统调用的使用方法
|
- 《UNIX 网络编程》介绍了 UNIX 网络方面的原理和调用方法,是对 APUE 的扩充。如果这本书看不下去的可以直接看下面这本。
|
||||||
|
- 《Linux 多线程服务端编程:使用 muduo C++网络库》介绍了如何使用 C++开发高性能服务器,这本书个人认为写的非常好,我也是照着这本书写了自己的服务器的项目。
|
||||||
|
- man 手册,可以直接在命令行查看系统调用的使用方法
|
||||||
|
|
||||||
##### 数据库
|
##### 数据库
|
||||||
- 数据库基本原理,B站有很多类似的课程,我看的是东南大学的数据库原理及应用
|
|
||||||
- 《Mysql必知必会》,讲mysql的用法,也可以去看B站狂神的视频
|
- 数据库基本原理,B 站有很多类似的课程,我看的是东南大学的数据库原理及应用
|
||||||
- 《MySQL技术内幕 InnoDB存储引擎》这本书写得非常不错,有很多面试常见的知识点
|
- 《Mysql 必知必会》,讲 mysql 的用法,也可以去看 B 站狂神的视频
|
||||||
|
- 《MySQL 技术内幕 InnoDB 存储引擎》这本书写得非常不错,有很多面试常见的知识点
|
||||||
|
|
||||||
##### Nosql
|
##### Nosql
|
||||||
- 《Redis设计与实现》介绍了redis的源码设计,redis有很多设计非常巧妙的数据结构,以及它在时间和空间上的高性能是怎么做的。总之里面有很多让人印象深刻的点。另外redis本身是用c语言写的,所以感兴趣的话还可以直接去看源码。
|
|
||||||
- b站狂神讲redis使用讲的也挺好的
|
- 《Redis 设计与实现》介绍了 redis 的源码设计,redis 有很多设计非常巧妙的数据结构,以及它在时间和空间上的高性能是怎么做的。总之里面有很多让人印象深刻的点。另外 redis 本身是用 c 语言写的,所以感兴趣的话还可以直接去看源码。
|
||||||
|
- b 站狂神讲 redis 使用讲的也挺好的
|
||||||
|
|
||||||
##### GCC+GDB
|
##### GCC+GDB
|
||||||
这部分都是C++开发和调试的辅助工具,有些面试比较喜欢问这个,b站也有类似视频,都大同小异,我这部分准备地也不好
|
|
||||||
|
这部分都是 C++开发和调试的辅助工具,有些面试比较喜欢问这个,b 站也有类似视频,都大同小异,我这部分准备地也不好
|
||||||
|
|
||||||
- 常见编译选项
|
- 常见编译选项
|
||||||
- GDB原理
|
- GDB 原理
|
||||||
- GDB常用命令
|
- GDB 常用命令
|
||||||
- 线上进程如何调试
|
- 线上进程如何调试
|
||||||
|
|
||||||
##### 设计模式
|
##### 设计模式
|
||||||
|
|
||||||
- 常见的设计模式用途和优缺点
|
- 常见的设计模式用途和优缺点
|
||||||
- b站上有设计模式的课程,我看的是[李建忠的课程](https://b23.tv/OyZBky),感觉讲得挺好的
|
- b 站上有设计模式的课程,我看的是[李建忠的课程](https://b23.tv/OyZBky),感觉讲得挺好的
|
||||||
|
|
||||||
##### 分布式系统设计
|
##### 分布式系统设计
|
||||||
- 这部分知道CAP/BASE是啥应该就够了,我看了一遍[这个](https://b23.tv/OyZBky),感觉和没看一样哈哈
|
|
||||||
|
- 这部分知道 CAP/BASE 是啥应该就够了,我看了一遍[这个](https://b23.tv/OyZBky),感觉和没看一样哈哈
|
||||||
|
|
||||||
##### docker
|
##### docker
|
||||||
|
|
||||||
这部分的话只是自己感兴趣所以看的,面试一般不会问
|
这部分的话只是自己感兴趣所以看的,面试一般不会问
|
||||||
- b站狂神的docker教程教你如何使用docker
|
|
||||||
- 《自己动手写docker》教你如何实现一个docker,以及docker底层的原理。docker是用go写的,还可以顺带学一下go,照着敲一遍最后写出来还是蛮有成就感的。
|
- b 站狂神的 docker 教程教你如何使用 docker
|
||||||
|
- 《自己动手写 docker》教你如何实现一个 docker,以及 docker 底层的原理。docker 是用 go 写的,还可以顺带学一下 go,照着敲一遍最后写出来还是蛮有成就感的。
|
||||||
|
|
||||||
### 关于项目
|
### 关于项目
|
||||||
C++一般都是用来造轮子,所以在项目上大多都是偏底层的一些工具。和java选手对比起来,在面试中会吃亏一些,java选手对高并发,实际的业务场景中的问题和解决方法会有更深刻的认识。下面举一些常见的项目:
|
|
||||||
- **网络库/web服务器**:基本C++的人手一个,牛客也有卖类似的课程,我也是参考muduo写的。这个的话最好测一测QPS来体现那能达到的效果
|
C++一般都是用来造轮子,所以在项目上大多都是偏底层的一些工具。和 java 选手对比起来,在面试中会吃亏一些,java 选手对高并发,实际的业务场景中的问题和解决方法会有更深刻的认识。下面举一些常见的项目:
|
||||||
- **数据库**:写一个简易数据库,这个部分可以看MIT的数据库课程,里面的作业就是写一个数据库。除此之外,前面提到redis就是用C写的,所以也可以用C++写一个类似的简易版非关系型数据库。
|
|
||||||
- **tinySTL**:实现STL常用的容器和函数,能够对底层数据结构有更清晰的认识。
|
- **网络库/web 服务器**:基本 C++的人手一个,牛客也有卖类似的课程,我也是参考 muduo 写的。这个的话最好测一测 QPS 来体现那能达到的效果
|
||||||
- **rp**c:rpc是分布式系统中最重要的一环,可以参考Dubbo和grpc实现一个简易RPC
|
- **数据库**:写一个简易数据库,这个部分可以看 MIT 的数据库课程,里面的作业就是写一个数据库。除此之外,前面提到 redis 就是用 C 写的,所以也可以用 C++写一个类似的简易版非关系型数据库。
|
||||||
- **flamingo**:如果时间充裕的话,推荐这个,写一个类似QQ的软件。github上搜一下就有,感觉比较牛逼,而且资料和教程都很全。
|
- **tinySTL**:实现 STL 常用的容器和函数,能够对底层数据结构有更清晰的认识。
|
||||||
|
- **rp**c:rpc 是分布式系统中最重要的一环,可以参考 Dubbo 和 grpc 实现一个简易 RPC
|
||||||
|
- **flamingo**:如果时间充裕的话,推荐这个,写一个类似 QQ 的软件。github 上搜一下就有,感觉比较牛逼,而且资料和教程都很全。
|
||||||
|
|
||||||
### 关于笔试
|
### 关于笔试
|
||||||
- 笔试通常都是**ACM模式,需要自己处理输入和输出**,对C++其实不太友好
|
|
||||||
|
- 笔试通常都是**ACM 模式,需要自己处理输入和输出**,对 C++其实不太友好
|
||||||
- 输入的处理,**未给定行数的情况**,不知道行数,可以用
|
- 输入的处理,**未给定行数的情况**,不知道行数,可以用
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
@ -72,6 +104,7 @@ C++一般都是用来造轮子,所以在项目上大多都是偏底层的一
|
|||||||
...
|
...
|
||||||
}//可以读到EOF
|
}//可以读到EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
- **万能头文件**
|
- **万能头文件**
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
@ -79,16 +112,18 @@ C++一般都是用来造轮子,所以在项目上大多都是偏底层的一
|
|||||||
//牛客和赛马都能用,有些编译器不支持
|
//牛客和赛马都能用,有些编译器不支持
|
||||||
```
|
```
|
||||||
|
|
||||||
- **学点python**,前面提到,笔试对C++其实不太友好,比如笔试经常会用到字符分割,字符串和数字转换,C++可能要写for分割,用atoi或者to_string做转换,用python就会很方便。再比如一些大数相加,用C++只能用字符串或者链表来做加法,python就不用考虑溢出
|
- **学点 python**,前面提到,笔试对 C++其实不太友好,比如笔试经常会用到字符分割,字符串和数字转换,C++可能要写 for 分割,用 atoi 或者 to_string 做转换,用 python 就会很方便。再比如一些大数相加,用 C++只能用字符串或者链表来做加法,python 就不用考虑溢出
|
||||||
- **选择合适的数据结构**,比如之前的笔试题:如果按题目的意图,可能你要建立链表节点的结构,然后针对输入去解析数字,构建链表,写翻转链表的函数,再遍历链表输出。但实际上,这题只需要用字符串就可以,对整个输入的字符串做reverse,再针对每一个数进行一次reverse就可以了。
|
- **选择合适的数据结构**,比如之前的笔试题:如果按题目的意图,可能你要建立链表节点的结构,然后针对输入去解析数字,构建链表,写翻转链表的函数,再遍历链表输出。但实际上,这题只需要用字符串就可以,对整个输入的字符串做 reverse,再针对每一个数进行一次 reverse 就可以了。
|
||||||
- **取巧**,对于一些输出true/false或者数字的题,实在写不出来,随便打印一个答案可能就能拿几十分。
|
- **取巧**,对于一些输出 true/false 或者数字的题,实在写不出来,随便打印一个答案可能就能拿几十分。
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
//翻转链表
|
//翻转链表
|
||||||
//输入:1,23,456,78
|
//输入:1,23,456,78
|
||||||
//输出:78,456,23,1
|
//输出:78,456,23,1
|
||||||
```
|
```
|
||||||
- **其他一些辅助手段**
|
|
||||||
一些ACM选手喜欢加一些这样的操作提高码字速度和IO速度,但个人感觉对于一般的笔试而言,提升效果有限。
|
- **其他一些辅助手段**
|
||||||
|
一些 ACM 选手喜欢加一些这样的操作提高码字速度和 IO 速度,但个人感觉对于一般的笔试而言,提升效果有限。
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
//1、cin的效率不如scanf,cin会有缓冲区。可以参考ACM比赛时用到的优化方法
|
//1、cin的效率不如scanf,cin会有缓冲区。可以参考ACM比赛时用到的优化方法
|
||||||
@ -118,11 +153,14 @@ int main() {
|
|||||||
```
|
```
|
||||||
|
|
||||||
### 关于面试
|
### 关于面试
|
||||||
|
|
||||||
- **面经非常重要**,面试中一半的问题都可以在牛客面经中找到。因此可以找牛客上相关高质量的面经自己做整理然后过一遍。
|
- **面经非常重要**,面试中一半的问题都可以在牛客面经中找到。因此可以找牛客上相关高质量的面经自己做整理然后过一遍。
|
||||||
- 面试一般分为**基础知识**和**项目经历**两部分,如果项目经历比较少就会着重问基础,如果面试官对项目经历感兴趣可能全部都会问项目。
|
- 面试一般分为**基础知识**和**项目经历**两部分,如果项目经历比较少就会着重问基础,如果面试官对项目经历感兴趣可能全部都会问项目。
|
||||||
- 项目上每一个点,都要问自己:**除了这样做还能怎么做,你为什么选择这样做,这样做的优点是什么,以及这样做的底层是怎么实现的**。比如我做的网络库,最常见的问题:select,poll,epoll优缺点,选择的原因,底层原理。当你回答完之后,再往下挖,可能就会问epoll为什么用红黑树,红黑树的底层原理和优缺点。知识点要学会发散。比如问完红黑树,面试官可能会问你其他的树和数据结构,比如avl树和红黑树的区别,红黑树和快表的区别。再发散问,可能问redis为什么用快表不用红黑树。总之,在准备面试时也要**学会发散地思考**。
|
- 项目上每一个点,都要问自己:**除了这样做还能怎么做,你为什么选择这样做,这样做的优点是什么,以及这样做的底层是怎么实现的**。比如我做的网络库,最常见的问题:select,poll,epoll 优缺点,选择的原因,底层原理。当你回答完之后,再往下挖,可能就会问 epoll 为什么用红黑树,红黑树的底层原理和优缺点。知识点要学会发散。比如问完红黑树,面试官可能会问你其他的树和数据结构,比如 avl 树和红黑树的区别,红黑树和快表的区别。再发散问,可能问 redis 为什么用快表不用红黑树。总之,在准备面试时也要**学会发散地思考**。
|
||||||
- 很多时候,面试官可能不了解C++,或者说投递的岗位不是用的C++,所以面试官不会问很多C++的知识,而是会问一些操作系统或者网络或者数据库等通用的知识,因此这些**通用的基础知识一定要扎实**,否则怎么能比得过那些语言对口的竞争者呢
|
- 很多时候,面试官可能不了解 C++,或者说投递的岗位不是用的 C++,所以面试官不会问很多 C++的知识,而是会问一些操作系统或者网络或者数据库等通用的知识,因此这些**通用的基础知识一定要扎实**,否则怎么能比得过那些语言对口的竞争者呢
|
||||||
- **掌握主动权**,面试官的问题很多都是从你的角度来问的,比如你的简历提到了xxx,那么你讲一下xxx吧。再比如,你刚刚回答里面提到了xxx,那么你讲一下xxx。所以,自己是能够掌握一些面试中的主动权的。因此,自己掌握的知识点和看过的书都可以在简历上有所体现,在简历中的每一个点都足够熟悉,不熟悉的不放上去。然后在回答问题中,也要尽量回答自己熟悉的点,对于不熟悉的点可以快速带过,对熟悉的点可以适当展开。
|
- **掌握主动权**,面试官的问题很多都是从你的角度来问的,比如你的简历提到了 xxx,那么你讲一下 xxx 吧。再比如,你刚刚回答里面提到了 xxx,那么你讲一下 xxx。所以,自己是能够掌握一些面试中的主动权的。因此,自己掌握的知识点和看过的书都可以在简历上有所体现,在简历中的每一个点都足够熟悉,不熟悉的不放上去。然后在回答问题中,也要尽量回答自己熟悉的点,对于不熟悉的点可以快速带过,对熟悉的点可以适当展开。
|
||||||
- 面试过程中要**适当反问面试官,了解面试官提问的意图**,可也以让他给你做适当的提示。比如一个很泛的问题可能你觉得有好几个方面,所以要了解面试官想让你深入哪个方面。
|
- 面试过程中要**适当反问面试官,了解面试官提问的意图**,可也以让他给你做适当的提示。比如一个很泛的问题可能你觉得有好几个方面,所以要了解面试官想让你深入哪个方面。
|
||||||
|
|
||||||
### 总结
|
### 总结
|
||||||
|
|
||||||
- 以上是个人的一点心得,仅供参考,不一定适合所有人。因为自己导师比较放养,给了我很多空闲的时间可以去学习自己感兴趣的东西,也真的非常感谢我的导师,希望能让我顺利毕业哈哈哈。后续我也会整理一些面经,希望能帮助到大家。
|
- 以上是个人的一点心得,仅供参考,不一定适合所有人。因为自己导师比较放养,给了我很多空闲的时间可以去学习自己感兴趣的东西,也真的非常感谢我的导师,希望能让我顺利毕业哈哈哈。后续我也会整理一些面经,希望能帮助到大家。
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
大家好,我是厨子,很荣幸收到地哥的邀请,来给大家分享一下我的秋招心得。
|
大家好,我是厨子,很荣幸收到地哥的邀请,来给大家分享一下我的秋招心得。
|
||||||
|
|
||||||
先说一下本人情况,中下游 211 硕,CS专业,面试的为 Java 后台开发岗位。
|
先说一下本人情况,中下游 211 硕,CS 专业,面试的为 Java 后台开发岗位。
|
||||||
|
|
||||||
再说下我的秋招战绩,参加了大概 40 - 50 场面试,最长记录是连续通过了 32 场面试,目前是拿到了大概 13 个录用意向,有 腾讯,百度等一线,一些二线互联网,也有银行开发岗和研究所。面试前,我给自己定的目标是能够拿到 2 个二线互联网公司的 offer 即可,(入职前可以有个选择)没想到远远超过了当时定下的目标。
|
再说下我的秋招战绩,参加了大概 40 - 50 场面试,最长记录是连续通过了 32 场面试,目前是拿到了大概 13 个录用意向,有 腾讯,百度等一线,一些二线互联网,也有银行开发岗和研究所。面试前,我给自己定的目标是能够拿到 2 个二线互联网公司的 offer 即可,(入职前可以有个选择)没想到远远超过了当时定下的目标。
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#### 1)选准方向
|
#### 1)选准方向
|
||||||
|
|
||||||
目前主流的几种方向是 算法岗,大数据,后台开发,前端,测试开发等,后台开发又可分为 C++开发工程师,Java开发工程师等,这一步骤大家自己规划,可以参考知乎,脉脉等一些网站的回答,一旦选准自己的方向,就不要再轻易改变。不然会影响你的复习节奏和进度。
|
目前主流的几种方向是 算法岗,大数据,后台开发,前端,测试开发等,后台开发又可分为 C++开发工程师,Java 开发工程师等,这一步骤大家自己规划,可以参考知乎,脉脉等一些网站的回答,一旦选准自己的方向,就不要再轻易改变。不然会影响你的复习节奏和进度。
|
||||||
|
|
||||||
#### 2)端正态度
|
#### 2)端正态度
|
||||||
|
|
||||||
@ -65,8 +65,6 @@
|
|||||||
|
|
||||||
![](https://img-blog.csdnimg.cn/a3bc62b23f994897a01d2f3a55b7463a.png)
|
![](https://img-blog.csdnimg.cn/a3bc62b23f994897a01d2f3a55b7463a.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
第二步:看面经(八股)
|
第二步:看面经(八股)
|
||||||
|
|
||||||
啥?你刚才还说不能只看八股,这刚调研完经典书籍,就开始看八股了?这不是自己打自己脸吗?先别骂,先别骂,听我接着往下说。
|
啥?你刚才还说不能只看八股,这刚调研完经典书籍,就开始看八股了?这不是自己打自己脸吗?先别骂,先别骂,听我接着往下说。
|
||||||
@ -100,17 +98,17 @@
|
|||||||
我秋招时,主要准备了以下科目,每个科目都看了 1 - 2 本书或课程。
|
我秋招时,主要准备了以下科目,每个科目都看了 1 - 2 本书或课程。
|
||||||
|
|
||||||
- 数据结构与算法 ⭐️⭐️⭐️⭐️⭐️
|
- 数据结构与算法 ⭐️⭐️⭐️⭐️⭐️
|
||||||
- 操作系统⭐️⭐️⭐️
|
- 操作系统 ⭐️⭐️⭐️
|
||||||
- 计算机网络⭐️⭐️⭐️⭐️
|
- 计算机网络 ⭐️⭐️⭐️⭐️
|
||||||
- Java基础⭐️⭐️⭐️⭐️
|
- Java 基础 ⭐️⭐️⭐️⭐️
|
||||||
- MySQL⭐️⭐️⭐️⭐️
|
- MySQL⭐️⭐️⭐️⭐️
|
||||||
- JVM ⭐️⭐️⭐️⭐️
|
- JVM ⭐️⭐️⭐️⭐️
|
||||||
- Redis⭐️⭐️⭐️
|
- Redis⭐️⭐️⭐️
|
||||||
- Java并发编程⭐️⭐️⭐️
|
- Java 并发编程 ⭐️⭐️⭐️
|
||||||
- Spring全家桶⭐️⭐️
|
- Spring 全家桶 ⭐️⭐️
|
||||||
- Linux⭐️⭐️⭐️
|
- Linux⭐️⭐️⭐️
|
||||||
- 设计模式⭐️⭐️
|
- 设计模式 ⭐️⭐️
|
||||||
- 1-2两个能拿得出手的项目。⭐️⭐️⭐️⭐️⭐️
|
- 1-2 两个能拿得出手的项目。⭐️⭐️⭐️⭐️⭐️
|
||||||
|
|
||||||
星星的数目代表被考到的频率,星星越多,我被考到的次数越多,大家可以先按照我的考察频率进行复习,后面再进行微调。
|
星星的数目代表被考到的频率,星星越多,我被考到的次数越多,大家可以先按照我的考察频率进行复习,后面再进行微调。
|
||||||
|
|
||||||
@ -129,7 +127,7 @@
|
|||||||
|
|
||||||
前期可以使用 Leetcode 进行刷题,刷够一定量之后,感觉自己对某些题目有一些思路之后,再使用 Acwing ,Acwing 可以帮助我们模拟考场环境,因为你笔试的时候大多都是 Acwing 模式。
|
前期可以使用 Leetcode 进行刷题,刷够一定量之后,感觉自己对某些题目有一些思路之后,再使用 Acwing ,Acwing 可以帮助我们模拟考场环境,因为你笔试的时候大多都是 Acwing 模式。
|
||||||
|
|
||||||
LeetCode 刷题时,可以按照标签刷,可以先按照数组,每个标签刷几道经典题目,等到感觉自己有些自己想法的时候,则可以刷leetcode hot 100 和 剑指 offer,前期注重数量,后期注重质量,把那些经典高频的题目多刷几遍, 因为面试时,面试官让你写的大多都是经典题目,你曾经刷过的那些,所以我们要把这些题目烂熟于心。
|
LeetCode 刷题时,可以按照标签刷,可以先按照数组,每个标签刷几道经典题目,等到感觉自己有些自己想法的时候,则可以刷 leetcode hot 100 和 剑指 offer,前期注重数量,后期注重质量,把那些经典高频的题目多刷几遍, 因为面试时,面试官让你写的大多都是经典题目,你曾经刷过的那些,所以我们要把这些题目烂熟于心。
|
||||||
|
|
||||||
还有极其重要的一点
|
还有极其重要的一点
|
||||||
|
|
||||||
@ -166,27 +164,27 @@ LeetCode 刷题时,可以按照标签刷,可以先按照数组,每个标
|
|||||||
|
|
||||||
《网络是怎么连接的》两遍
|
《网络是怎么连接的》两遍
|
||||||
|
|
||||||
《图解HTTP》两遍
|
《图解 HTTP》两遍
|
||||||
|
|
||||||
《图解TCP/IP》重点章节阅读2-3遍
|
《图解 TCP/IP》重点章节阅读 2-3 遍
|
||||||
|
|
||||||
《计算机网络自顶向下》重点章节阅读
|
《计算机网络自顶向下》重点章节阅读
|
||||||
|
|
||||||
《趣谈网络协议》百分之 60 章节,某些章节看了 2-3遍
|
《趣谈网络协议》百分之 60 章节,某些章节看了 2-3 遍
|
||||||
|
|
||||||
还有 小林 coding 的一些文章,有时候还会用 wireshark 抓一下包,刚开始我是很排斥网络的,后面学起来,越学越有趣。算是相对简单的一门课程。
|
还有 小林 coding 的一些文章,有时候还会用 wireshark 抓一下包,刚开始我是很排斥网络的,后面学起来,越学越有趣。算是相对简单的一门课程。
|
||||||
|
|
||||||
我认为大家还是要系统学习一下,有自己的知识体系,后面对知识点的穿插很有帮助。
|
我认为大家还是要系统学习一下,有自己的知识体系,后面对知识点的穿插很有帮助。
|
||||||
|
|
||||||
### Java基础
|
### Java 基础
|
||||||
|
|
||||||
Java基础的话,我没有看太多书籍,因为我之前就学习过 Java,后面的重点放在了看一些集合的源码上,常考的几个集合,比如 ArrayList,LinkedList,HashMap,HashTable,ConcurrentHashMap等,我个人建议大家自己 debug 一下,跟着执行一遍,看下每个函数的逻辑。能让你的印象更深刻。
|
Java 基础的话,我没有看太多书籍,因为我之前就学习过 Java,后面的重点放在了看一些集合的源码上,常考的几个集合,比如 ArrayList,LinkedList,HashMap,HashTable,ConcurrentHashMap 等,我个人建议大家自己 debug 一下,跟着执行一遍,看下每个函数的逻辑。能让你的印象更深刻。
|
||||||
|
|
||||||
剩下的就可以根据某些面经和文章,整理一下 Java 常考的面试题,后面你会发现,面试的时候,这块的问题都被你掌握啦。
|
剩下的就可以根据某些面经和文章,整理一下 Java 常考的面试题,后面你会发现,面试的时候,这块的问题都被你掌握啦。
|
||||||
|
|
||||||
所以这块的学习重点就放在容器源码的阅读和面经上吧,另外如果没有学习过 Java 的同学,可以看下这个视频,看了几个视频感觉这个讲的最好。https://www.bilibili.com/video/BV1uJ411k7wy?from=search&seid=7142847222883537630&spm_id_from=333.337.0.0
|
所以这块的学习重点就放在容器源码的阅读和面经上吧,另外如果没有学习过 Java 的同学,可以看下这个视频,看了几个视频感觉这个讲的最好。https://www.bilibili.com/video/BV1uJ411k7wy?from=search&seid=7142847222883537630&spm_id_from=333.337.0.0
|
||||||
|
|
||||||
推荐书籍:《Java编程思想》,《Java核心技术卷》
|
推荐书籍:《Java 编程思想》,《Java 核心技术卷》
|
||||||
|
|
||||||
### MySQL
|
### MySQL
|
||||||
|
|
||||||
@ -230,7 +228,7 @@ Java基础的话,我没有看太多书籍,因为我之前就学习过 Java
|
|||||||
|
|
||||||
https://www.bilibili.com/video/BV1uW411f72n?from=search&seid=6302178952751913801&spm_id_from=333.337.0.0
|
https://www.bilibili.com/video/BV1uW411f72n?from=search&seid=6302178952751913801&spm_id_from=333.337.0.0
|
||||||
|
|
||||||
推荐书籍:操作系统考研书籍,《深入理解计算机系统》,小林Coding 图解操作系统 电子书
|
推荐书籍:操作系统考研书籍,《深入理解计算机系统》,小林 Coding 图解操作系统 电子书
|
||||||
|
|
||||||
### JVM
|
### JVM
|
||||||
|
|
||||||
@ -244,29 +242,29 @@ JVM 的话,我只看了深入理解 Java 虚拟机,看了大概 3 遍吧。
|
|||||||
|
|
||||||
虽然我之前没有用过 Redis,但是我感觉这门科目还是比较容易入门的。我主要看了两本书。
|
虽然我之前没有用过 Redis,但是我感觉这门科目还是比较容易入门的。我主要看了两本书。
|
||||||
|
|
||||||
《Redis设计与实现》,这本书看了大概三遍吧,非常简单且全面的一本书。
|
《Redis 设计与实现》,这本书看了大概三遍吧,非常简单且全面的一本书。
|
||||||
|
|
||||||
《Redis核心技术与实战》这是极客时间的一门课程,后面的话,主要是看这门课程,某些重点章节看了好几遍,还自己安装了 Redis,进行实践,并用到项目上。
|
《Redis 核心技术与实战》这是极客时间的一门课程,后面的话,主要是看这门课程,某些重点章节看了好几遍,还自己安装了 Redis,进行实践,并用到项目上。
|
||||||
|
|
||||||
考察比较多的问题就是底层数据结构,数据表现形式,数据不一致性问题,穿透,击穿等。都相对比较简单,看过书的话,基本都不会有太大问题,不过这一门课也是考察重点,大家需要认真学习。
|
考察比较多的问题就是底层数据结构,数据表现形式,数据不一致性问题,穿透,击穿等。都相对比较简单,看过书的话,基本都不会有太大问题,不过这一门课也是考察重点,大家需要认真学习。
|
||||||
|
|
||||||
### Java高并发
|
### Java 高并发
|
||||||
|
|
||||||
这门课我也主要看了两本书
|
这门课我也主要看了两本书
|
||||||
|
|
||||||
《Java并发编程之美》一遍半
|
《Java 并发编程之美》一遍半
|
||||||
|
|
||||||
《Java并发程序设计》两遍
|
《Java 并发程序设计》两遍
|
||||||
|
|
||||||
感觉第一本书,可以帮助我们入门,对一些锁和容器线程安全等概念有一些了解,后面的话可以看Java并发程序设计,我认为这本书非常好。当时看了两遍,还做了笔记,并自己动手实践和看了一些线程安全容器的代码。
|
感觉第一本书,可以帮助我们入门,对一些锁和容器线程安全等概念有一些了解,后面的话可以看 Java 并发程序设计,我认为这本书非常好。当时看了两遍,还做了笔记,并自己动手实践和看了一些线程安全容器的代码。
|
||||||
|
|
||||||
这一块,我也没有特别多的心得,因为我感觉我自己学的也不太好,勉强可以应付面试,不过我的建议是,自己多动手实践,对技术保持热情。
|
这一块,我也没有特别多的心得,因为我感觉我自己学的也不太好,勉强可以应付面试,不过我的建议是,自己多动手实践,对技术保持热情。
|
||||||
|
|
||||||
常考的问题,synchronized 底层原理,volatile底层原理,ReentrantLock底层原理,线程池等。这一门科目也是 Javaer 必考科目,大家需要认真学习。
|
常考的问题,synchronized 底层原理,volatile 底层原理,ReentrantLock 底层原理,线程池等。这一门科目也是 Javaer 必考科目,大家需要认真学习。
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
|
|
||||||
这个的话,考察的还比较多,因为平常我也会使用 Linux ,所以这一块也没有太为难,这个在以后的企业开发中,会经常使用,所以我们有必要提前进行学习。个人建议时间充裕的话可以看下 《UNIX网络编程》那本书,虽然比较厚,但是干货满满,啃完之后能够收获很多。
|
这个的话,考察的还比较多,因为平常我也会使用 Linux ,所以这一块也没有太为难,这个在以后的企业开发中,会经常使用,所以我们有必要提前进行学习。个人建议时间充裕的话可以看下 《UNIX 网络编程》那本书,虽然比较厚,但是干货满满,啃完之后能够收获很多。
|
||||||
|
|
||||||
### 设计模式
|
### 设计模式
|
||||||
|
|
||||||
@ -276,7 +274,7 @@ https://refactoringguru.cn/design-patterns/structural-patterns
|
|||||||
|
|
||||||
或者通过《大话设计模式》进行学习,了解几种常见的设计模式,足够应付面试啦。
|
或者通过《大话设计模式》进行学习,了解几种常见的设计模式,足够应付面试啦。
|
||||||
|
|
||||||
### Spring全家桶
|
### Spring 全家桶
|
||||||
|
|
||||||
这一块的话,我主要是看的视频,面试时,问的也不太多,校招的话更多的还是注重基础知识。不过我们的项目中,会经常被问到。
|
这一块的话,我主要是看的视频,面试时,问的也不太多,校招的话更多的还是注重基础知识。不过我们的项目中,会经常被问到。
|
||||||
|
|
||||||
@ -471,6 +469,3 @@ HR 面基本就是唠嗑局,还挺有意思的。
|
|||||||
另外再送给大家一句话,相信自己,你是一个不可多得的人才!他们在面试你,你同样也在面试他们。最后能不能入职,就看彼此是否有缘。
|
另外再送给大家一句话,相信自己,你是一个不可多得的人才!他们在面试你,你同样也在面试他们。最后能不能入职,就看彼此是否有缘。
|
||||||
|
|
||||||
好啦,就唠到这啦,拜了个拜,我是厨子,一位普通的球友,希望大家在秋招中都能够拿到自己满意的 offer。
|
好啦,就唠到这啦,拜了个拜,我是厨子,一位普通的球友,希望大家在秋招中都能够拿到自己满意的 offer。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user