Skip to content

Commit 8198cf5

Browse files
committed
添加若干道【机器学习】【编程语言】【数据结构与算法】面试题
1 parent 1f7e306 commit 8198cf5

File tree

6 files changed

+132
-57
lines changed

6 files changed

+132
-57
lines changed

docs/其它.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,5 +226,31 @@ DDOS攻击是基于DOS攻击的一种特殊形式。攻击者将多台受控制
226226
- [百度百科:大小端模式](https://baike.baidu.com/item/%E5%A4%A7%E5%B0%8F%E7%AB%AF%E6%A8%A1%E5%BC%8F/6750542?fr=aladdin)
227227
- [大小端模式](https://www.cnblogs.com/mconintet/p/4701790.html)
228228

229+
## 线程和进程的区别
230+
231+
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
232+
233+
在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
234+
235+
所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
236+
237+
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
238+
239+
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
240+
241+
**参考资料**
242+
243+
- [进程和线程的主要区别(总结)](https://blog.csdn.net/kuangsonghan/article/details/80674777)
244+
- [线程和进程的区别](https://www.cnblogs.com/GodZhe/p/4887096.html)
245+
246+
## Linux 常见命令
247+
248+
- [ ] TODO
249+
250+
**参考资料**
251+
252+
- [Linux命令大全](https://man.linuxde.net/rm)
253+
- [Linux常用命令大全(非常全!!!)](https://www.cnblogs.com/yjd_hycf_space/p/7730690.html)
254+
229255
## TODO
230256

docs/数据结构与算法.md

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# 数据结构与算法
44

5-
## 001 排序介绍
5+
## 排序介绍
66

77
**排序的定义**
88

@@ -27,7 +27,7 @@
2727
- **时间复杂度**:对排序数据的总的操作次数。反应当n变化时,操作次数呈现什么规律
2828
- **空间复杂度**:算法在计算机内执行时所需要的存储空间的容量,它也是数据规模n的函数。
2929

30-
## 002 排序算法
30+
## 排序算法
3131

3232
排序算法可以分成两大类:
3333

@@ -43,7 +43,7 @@
4343
- [`归并排序(merge Sort`](https://github.com/amusi/coding-note/tree/master/Data%20Structures%20and%20Algorithms/sort#mergesort)
4444
- [`快速排序(Fast Sort`](https://github.com/amusi/coding-note/tree/master/Data%20Structures%20and%20Algorithms/sort#fastsort)
4545

46-
## 003 常见排序算法复杂度
46+
## 常见排序算法复杂度
4747

4848
[![常用排序算法1](https://github.com/amusi/coding-note/raw/master/Data%20Structures%20and%20Algorithms/sort/images/sort_algorithms_1.png)](https://github.com/amusi/coding-note/blob/master/Data%20Structures%20and%20Algorithms/sort/images/sort_algorithms_1.png)
4949

@@ -53,7 +53,7 @@
5353

5454

5555

56-
## 004 冒泡排序(Bubble Sort)
56+
## 冒泡排序(Bubble Sort)
5757

5858
**基本思想**
5959

@@ -292,7 +292,7 @@ print("BubbleSort: ", array)
292292

293293

294294

295-
## 005 选择排序(Selection Sort)
295+
## 选择排序(Selection Sort)
296296

297297
**基本思想**
298298

@@ -414,7 +414,7 @@ print("SelectionSort: ", array)
414414

415415

416416

417-
## 006 插入排序(Insertion Sort)
417+
## 插入排序(Insertion Sort)
418418

419419
**基本思想**
420420

@@ -445,8 +445,6 @@ print("SelectionSort: ", array)
445445

446446
**代码实现**
447447

448-
-
449-
450448
- [insertion_sort.cpp](https://github.com/amusi/coding-note/blob/master/Data%20Structures%20and%20Algorithms/sort/code/insertion_sort.cpp)
451449

452450
```
@@ -537,7 +535,7 @@ print("InsertionnSort: ", array)
537535

538536

539537

540-
## 007 希尔排序(Shell Sort)
538+
## 希尔排序(Shell Sort)
541539

542540
**基本思想**
543541

@@ -704,9 +702,7 @@ print("InsertionnSort: ", array)
704702
- [理解希尔排序的排序过程](https://blog.csdn.net/weixin_37818081/article/details/79202115)
705703
- [图解排序算法(二)之希尔排序](https://www.cnblogs.com/chengxiao/p/6104371.html)
706704

707-
708-
709-
## 008 堆排序(Heap Sort)
705+
## 堆排序(Heap Sort)
710706

711707
**基本思想**
712708

@@ -815,9 +811,7 @@ c.再将堆顶元素8与末尾元素5进行交换,得到第二大元素8.
815811
- [图解排序算法(三)之堆排序](https://www.cnblogs.com/chengxiao/p/6129630.html)
816812
- [heap-sort](https://www.geeksforgeeks.org/heap-sort/)
817813

818-
819-
820-
## 009 归并排序(Merge Sort)
814+
## 归并排序(Merge Sort)
821815

822816
**基本思想**
823817

@@ -827,7 +821,7 @@ c.再将堆顶元素8与末尾元素5进行交换,得到第二大元素8.
827821

828822
- [ ] TODO
829823

830-
## 010 快速排序(Quick Sort)
824+
## 快速排序(Quick Sort)
831825

832826
**基本思想**
833827

@@ -987,25 +981,39 @@ if __name__ == "__main__":
987981
print("QuickSort: ", array)
988982
```
989983

984+
## 求二叉树的最大高度
985+
986+
TODO
987+
988+
## 找到链表倒数第k个结点
989+
990+
- [ ] TODO
991+
992+
## 动态规划
993+
994+
- [ ] TODO
995+
996+
## 打印螺旋矩阵
990997

998+
- [ ] TODO
991999

992-
## 011 求二叉树的最大高度
1000+
## 翻转链表
9931001

994-
## 012 找到链表倒数第k个结点
1002+
- [ ] TODO
9951003

996-
## 013 动态规划
1004+
## 找最小字串
9971005

998-
## 014 打印螺旋矩阵
1006+
- [ ] TODO
9991007

1000-
## 015 翻转链表
1008+
## 二叉排序树/二叉查找树BST
10011009

1002-
## 016 找最小字串
1010+
- [ ] TODO
10031011

1004-
## 017 二叉排序树/二叉查找树BST
1012+
## 平衡二叉树
10051013

1006-
## 018 平衡二叉树
1014+
- [ ] TODO
10071015

1008-
## 019 2-sum、3-sum和4-sum问题
1016+
## 2-sum、3-sum和4-sum问题
10091017

10101018
N-sum就是从序列中找出N个数,使得N个数之和等于指定数值的问题。
10111019

@@ -1312,21 +1320,29 @@ void main()
13121320
- [剖析3-sum问题(Three sum)](https://blog.csdn.net/shaya118/article/details/40755551)
13131321
- [2-sum, 3-sum, 4-sum问题分析](http://shmilyaw-hotmail-com.iteye.com/blog/2085129)
13141322

1323+
## 无序数组a,b 归并排序成有序数组c
1324+
1325+
TODO
1326+
1327+
- [ ] ## 将256*256二维数组逆时针旋转90°
13151328

1329+
- [ ] TODO
13161330

1317-
## 020 无序数组a,b 归并排序成有序数组c
1331+
## 二分查找
13181332

1319-
## 021 将256*256二维数组逆时针旋转90°
1333+
- [ ] TODO
13201334

1321-
## 022 二分查找
1335+
## 分治与递归:逆序对数、大数相加、大数相乘
13221336

1323-
## 023 分治与递归:逆序对数、大数相加、大数相乘
1337+
## 动态规划:背包问题、找零钱问题和最长公共子序列(LCS)
13241338

1325-
## 024 动态规划:背包问题、找零钱问题和最长公共子序列(LCS)
1339+
- [ ] TODO
13261340

1327-
## 025 BFS和DFS解决最短路径
1341+
## BFS和DFS解决最短路径
13281342

1329-
## 026 DFS和BFS的区别(优缺点)
1343+
- [ ] TODO
1344+
1345+
## DFS和BFS的区别(优缺点)
13301346

13311347
深度优先搜索算法(Depth-First-Search,DFS)是一种利用递归实现的搜索算法。简单来说,其搜索过程和"不撞南墙不回头"类似。
13321348

@@ -1340,13 +1356,15 @@ BFS 常用于找单一的最短路线,它的特点是 "搜到就是最优解"
13401356

13411357
**参考资料**
13421358

1343-
- **[一文读懂** BFS 和 DFS 区别](https://www.sohu.com/a/201679198_479559)
1359+
- [一文读懂 BFS 和 DFS 区别](https://www.sohu.com/a/201679198_479559)
13441360

1345-
## 027 数组的最大区间和
1361+
## 数组的最大区间和
13461362

13471363
- [ ] TODO
13481364

1349-
## 028 迪杰斯特拉 (Dijkstra) 算法
1365+
## 迪杰斯特拉 (Dijkstra) 算法
1366+
1367+
- [ ] TODO
13501368

13511369
## TODO
13521370

docs/机器学习.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,11 +346,15 @@ http://www.zhihu.com/question/26768865/answer/34078149
346346
- [svm常用核函数及选择核函数的方法](https://blog.csdn.net/ningyanggege/article/details/84072842)
347347
- [SVM由浅入深的尝试(五)核函数的理解](https://www.jianshu.com/p/e07932472257?utm_campaign)
348348

349+
### SVM的对偶问题
350+
351+
- [ ] TODO
352+
349353
### SVM中的优化技术有哪些?
350354

351355
- [ ] TODO
352356

353-
## 梯度提升树(GDBT
357+
## 梯度提升树(GBDT
354358

355359
### 基本原理
356360

@@ -405,6 +409,14 @@ Adaboost采用迭代的思想,每次迭代只训练一个弱分类器,训练
405409
- [通俗、有逻辑的写一篇说下Xgboost的原理,供讨论参考](https://blog.csdn.net/github_38414650/article/details/76061893)
406410
- [xgboost的原理没你想像的那么难](https://www.jianshu.com/p/7467e616f227)
407411

412+
### XGBoost里处理缺失值的方法
413+
414+
- [ ] TODO
415+
416+
### XGBoost相对于GBDT有什么不同?
417+
418+
- [ ] TODO
419+
408420
## K 近邻(KNN)
409421

410422
### 基本原理
@@ -464,6 +476,10 @@ until 簇不发生变化或达到最大迭代次数
464476
- [深入理解K-Means聚类算法](https://blog.csdn.net/taoyanqi8932/article/details/53727841)
465477
- [数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)](https://blog.csdn.net/fuqiuai/article/details/79458331)
466478

479+
### 手撕 KMeans
480+
481+
- [ ] TODO
482+
467483
### K-Means 与 KNN 的区别
468484

469485
- [ ] TODO
@@ -663,6 +679,10 @@ CART在生成子树时,是选择一个特征一个取值作为切分点,生
663679

664680
- [ ] TODO
665681

682+
### 随机森林处理缺失值的方法
683+
684+
- [ ] TODO
685+
666686
## XGBoost
667687

668688
### 基本原理

docs/深度学习.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,16 @@
2121
- [神经网络中的Epoch、Iteration、Batchsize](https://zhuanlan.zhihu.com/p/67414365)
2222
- [神经网络中epoch与iteration相等吗](https://zhidao.baidu.com/question/716300338908227765.html)
2323

24+
## 反向传播(BP)
25+
26+
- [ ] TODO
27+
28+
**参考资料**
29+
30+
- [一文搞懂反向传播算法](https://www.jianshu.com/p/964345dddb70)
31+
2432
## CNN本质和优势
33+
2534
局部卷积(提取局部特征)
2635

2736
权值共享(降低训练难度)
@@ -146,6 +155,26 @@ if (this->layer_param_.pooling_param().pool() == PoolingParameter_PoolMethod_MAX
146155

147156
- [卷积神经网络的感受野](https://zhuanlan.zhihu.com/p/44106492)
148157

158+
## 正则化方法
159+
160+
1. [参数范数惩罚](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#1)
161+
2. [L2参数正则化](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#2)
162+
3. [L1参数正则化](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#3)
163+
4. [L1正则化和L2正则化的区别](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#4)
164+
5. [数据集增强](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#5)
165+
6. [噪音的鲁棒性](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#6)
166+
7. [向输出目标注入噪声](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#7)
167+
8. [半监督学习](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#8)
168+
9. [多任务学习](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#9)
169+
10. [提前终止](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#10)
170+
11. [参数绑定和共享](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#11)
171+
12. [稀疏表示](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#12)
172+
13. [集成化方法](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin#13)
173+
174+
**参考资料**
175+
176+
- [ ] [正则化方法](https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96%E6%96%B9%E6%B3%95/19145625?fr=aladdin)
177+
149178
## Batch Normalization(BN)
150179

151180
- [ ] TODO

docs/编程语言.md

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -231,24 +231,6 @@ b(static): 9
231231

232232
- [ ] TODO
233233

234-
### 多线程和多进程的区别
235-
236-
进程:系统进行资源分配和调度的基本单位。
237-
238-
线程:基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。(有种说法是线程是进程的实体)
239-
240-
线程和进程的关系:
241-
242-
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程
243-
244-
(2)资源分配给进程,同一个进程的所有线程共享该进程的所有资源
245-
246-
(3)CPU分给进程,即真正在CPU上运行的是线程
247-
248-
**参考资料**
249-
250-
- [多线程与多进程](https://www.cnblogs.com/yuanchenqi/articles/6755717.html)
251-
252234
### 实现atoi,即将"1234"转化成1234(int类型)
253235

254236
- [ ] TODO

docs/面试经验.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,9 @@
168168

169169
## 2018届
170170

171-
- [ ] [2018秋招算法岗面经与提问总结(蚂蚁/美图/宜信/滴滴)](https://www.nowcoder.com/discuss/93743)
172-
- [ ] [牛客网平均水平的算法工程师面经分享](https://www.nowcoder.com/discuss/51529)
173-
- [ ] [非科班野路子的2018秋招机器学习面经:面试实录+人生经验](https://www.nowcoder.com/discuss/59687)
171+
- [x] [2018秋招算法岗面经与提问总结(蚂蚁/美图/宜信/滴滴)](https://www.nowcoder.com/discuss/93743)
172+
- [x] [牛客网平均水平的算法工程师面经分享](https://www.nowcoder.com/discuss/51529)
173+
- [x] [非科班野路子的2018秋招机器学习面经:面试实录+人生经验](https://www.nowcoder.com/discuss/59687)
174174
- [x] [做计算机视觉的你,如何拿到大厂的Offer的?可否分享下?](https://www.zhihu.com/question/272045026/answer/365719603)
175175
- [x] [2017秋招面试总结-计算机视觉/深度学习算法](https://www.nowcoder.com/discuss/66114)
176176
- [x] [计算机视觉岗渣硕秋招总结](https://www.nowcoder.com/discuss/59801)

0 commit comments

Comments
 (0)