Coding
- 剑指offer
- LeetCode
- 大厂面经算法题
字节高频算法 字节算法+场景+智力(答案汇总在其他帖子)
- 常见ML、DL算法,如LR、Kmeans、AUC、NMS、BN、CNN、ResBlock等。
- 手把手带你用Numpy实现CNN
-【个人记录】学习numpy版CNN框架
- 深度学习优化算法(numpy实现)
已经在LR中一起实现。
- PyTorch DataLoader
- PyTorch中文文档
- NumPy中文文档
- XGBoost
CS 基础
CS基础 数据结构/网络/操作系统/数据库/设计模式@Ming
多进程、多线程、协程、socket 多线程与多进程的思考
Python 基础
Python/Numpy/PyTorch/sklearn/XGBoost/Linux 基础@Ming
什么是可变/不可变对象
不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。
可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。
is 就是判断两个对象的id是否相同, 而 == 判断的则是内容是否相同
还是看代码比较直观。先看不可变对象
Python高级编程 (!!两个小时视频课,一定要看!!)Python3 源码分析python 装饰器,superpython 垃圾回收机制python 多进程、多线程、GIL Python多进程与多线程编程
由于GIL的存在,很多人认为Python多进程编程更快,针对多核CPU,理论上来说也是采用多进程更能有效利用资源。网上很多人已做过比较,我直接告诉你结论吧。
对CPU密集型代码(比如循环计算) - 多进程效率更高对IO密集型代码(比如文件操作,网络爬虫) - 多线程效率更高。
为什么是这样呢?其实也不难理解。对于IO密集型操作,大部分消耗时间其实是等待时间,在等待时间中CPU是不需要工作的,那你在此期间提供双CPU资源也是利用不上的,相反对于CPU密集型代码,2个CPU干活肯定比一个CPU快很多。那么为什么多线程会对IO密集型代码有用呢?这时因为python碰到等待会释放GIL供新的线程使用,实现了线程间的切换。
Numpy、Pytorch基础
numpy 常用操作Pytorch 分布式训练的梯度回传、parameter server。最好了解下hadoop、hive、mapreduce原理等。TF和PyTorch 区别
Hadoop 相关
机器学习基础@Ming
《百面机器学习》笔记@Ming
- 数据清理
- 评价指标
- 常见概率分布、公式
- 逻辑回归、支持向量机、决策树
- 集成学习 bagging&boosting、GDBT、AdaBoost、XGBoost、Lightgbm
- 优化算法
拉格朗日法和KKT条件
- 常见面试题
过拟合、欠拟合、L1、L2偏差 Bias、方差 Variance,可结合bagging&boosting、或者过拟合、欠拟合。
计算机视觉基础
知乎 深度学习 计算机视觉 面试应聘集合
- 激活函数
- 优化器 SGD、Adagrad、Adam
- 常见backbone,如VGG、ResNet、inception、HRNet
- 常见Loss 函数
- 注意力机制SE、Non-local、DANet、GCNet
他的核心逻辑就是「从关注全部到关注重点」。
- BN、Layer N、Group N、Instance N等Normalization
- 炼丹技巧
CV任务总结:backbone/检测/分割/姿态@Ming
目标检测RCNN、YOLO、Anchor-free总结
服装关键点检测与项目总结
人体姿态估计总结
- Top-down 系列
- Bottom-up系列
- 拥挤场景、3D keypoints、skeleton-based Action Recognition
推荐系统基础
Word2Vec协同过滤UserCF、ItemCF矩阵分解FM、FFM、FwFmDeepFM、Wide&Deep、DeepCrossingESMM、MMoE
推荐系统与实习总结
特征筛选Multi-task Learning
常见智力题
最有挑战的事、最有成就感的事
面经
算法面经问题汇总 @Ming 京东算法面经 集合 @Ming 腾讯面经 集合