前段时间面试了一下微信后台支付,做后台开发。虽然不是做后台开发的,想着要不试试,虽然好多题目都会,但是后台开发的知识是真的欠缺,而且我是做AI的,人家也有疑虑,最终凉凉了。这里分享出来给有需要的朋友看看。
至于深度学习机器学习怎么准备可以看这里哦。
一文了解深度学习面试应该如何准备
「AI算法面试」机器学习知识点概览
1、讲解自己的项目。(任何面试都是少不了的~)
略
2、项目中用到了哪些STL?
vector/map/set等。
3、STL的vector和map的底层实现。
vector底层是数组实现,连续存储;
map底层实现是红黑树,hash_map底层实现是哈希表。
【算法面试之数据结构】红黑树(不懂底层,焉能成神)
4、迭代器删除元素会失效吗?解决方法。
使用erase删除迭代器,该函数返回的是下一个有效的迭代器。
5、讲一下模板?
template,class实现模板;
6、讲一下static的用法?修饰全局、局部、成员变量,全局、成员函数。
static修饰成员变量改变作用域,修饰局部变量后变量存储在静态存储区等等;
static修饰成员变量必须要在类外进行初始化,全部类对象共享一份static成员变量;
static修饰成员函数没有this指针,需要通过类访问,不能访问非静态成员。
7、面向对象的三大特性?
封装,继承,多态。
C++基础,后面文章专门阐述一下吧。
8、讲一下多态吧。
就是讲讲静态多态(重载),动态多态(虚函数,正好引出下一问)。
9、你提到了虚函数,虚函数是怎么实现的,派生类对象赋给基类指针,这个指针怎么去调函数?
就是虚函数表,虚函数指针这些的原理。(也正好引出下一问题)
10、虚函数表是对象拥有还是类拥有?
类拥有的,派生类重载基类的话,会用派生类的函数指针来覆盖基类的函数指针。
11、堆和栈是怎么申请和释放内存的?这么做是为了什么?
堆:new/malloc;delete/free等。
栈:程序申请和释放等等。
12、new和malloc的区别?
new的两个过程:调用malloc申请内存,并且调用构造函数。
malloc自然就是只是申请内存了。
13、你知道那些进程间的通信?
管道,套接字等等。
14、你了解TCP吗?如何实现可靠性传输?
握手,重传,拥塞控制等机制。
15、讲一下TCP的4次挥手?为什么要进行4次?
通俗点讲就是:
三次握手
客户端:我要连你。
服务端:我知道了,你连吧。
客户端:好的,我连了。
四次挥手
客户端:我要断了。
服务端:我知道了,我在传数据。
服务端:传完了,你断吧。
客户端:好的。(客户端要等2MSL确认服务端收到了这句“好的”)
16、讲一下poll,epoll,select的差异
因为我不是做后台开发的,所以在这里折戟沉沙了。
编程题目
二叉查找树查找一个数。
全程两个多小时,紧张刺激,哈哈。不过,我倒是不紧张的,除了后台开发的知识,我别的还是回答的可以的,自信心上来了,也就有条不紊了。
后面会给大家细细分享我的面试准备,虽然是做AI的,我的准备不限于深度学习,计算机视觉的,因为我对模型的算法原理,模型训练,模型转换优化,模型部署,深度学习框架都有比较多的研究,所以C++还有编译底层,计算机底层都是了解较多的。
欢迎大家关注,我们一起讨论进步。