算法工程师面试常考知识点和回答要点(持续更新中......)

面向视觉算法工程师岗位,涉及编程基础(C++)、数据结构、图像处理、机器学习、深度学习等

本文最后附有学习资料

编程基础

C与C++的区别

1)C面向过程,C++面向对象

2)动态管理内存的方法

C是使用malloc/free函数,而C++除此之外还有new/delete关键字

3)struct和类

C++的类是C所没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使struct在C++中可以和class一样当做类使用,而唯一和class不同的地方在于struct的成员默认访问修饰符是public,而class默认的是private

4)函数重载

C++支持函数重载,而C不支持函数重载,而C++支持重载的依仗就在于C++的名字修饰与C不同,例如在C++中函数int fun(int ,int)经过名字修饰之后变为_fun_int_int,而C是_fun,一般是这样的,所以C++才会支持不同的参数调用不同的函数

5)引用

C++中有引用,而C没有

6)const

C 中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以

面向对象编程特点

多态

多态的目的是为了接口重用,也就是说,无论传递过来的究竟是哪个类的对象,函数都能通过同一个接口调用适应各子对象的实现方法,具体的,因为父类的指针或引用可以指向其子类对象,而通过基类指针或引用调用虚函数时

虚函数

虚函数是C++中用于实现多态的机制,通过关键字virtual实现,具体的是将父类的某些成员函数定义为虚函数,然后在其子类中重新定义这些函数,当使用父类的指针或引用调用虚函数时,具体调用父类还是子类中的函数,需要在程序运行阶段才能确定,即根据指针或引用所指向数据的类型确定,表现为,同一段代码根据传入的参数类型不同,可能会产生不同的效果。

结构体与共用体区别

1)struct和union都由多个不同的数据类型成员组成,但在同一时刻,union中只存放了一个被选中的成员,而struct中所有成员都存在。

2)在struct中,各成员都占有自己的内存空间,它们是同时存在的,一个struct变量的总长度等于所有成员长度之和。在union中,所有成员不能同时占用它的内存空间,它们不能同时存在,union变量的长度等于最长的成员的长度。

3)对union中不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于struct的不同成员赋值是互不影响的。

参数传递方式

1)值传递

这种传递方式中,实参和形参是两个不同的地址空间,参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。

2)引用传递

这种参数传递方式中,形参是引用类型变量,其实就是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作,这样,整个函数执行完毕后,原先的实参的值将会发生改变。

3)指针传递(地址传递)

这种参数传递方式中,实参是变量的地址,形参是指针类型的变量,在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作,,函数调用结束后,原函数中的变量的值将会发生改变。

进程与线程

STL

STL分为容器、迭代器、空间配置器、配接器、算法、仿函数六个部分。

1)顺序容器

vector,list,deque,stack,queue,priority_queue

2)关联容器

map,set

3)容器选用

a.插入删除操作

 

b.元素的访问

 

c.选择容器的提示

 

指针与引用的区别

1)指针有自己的一块空间,而引用只是一个别名;

2)使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;

3)指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象的引用;

4)作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引用的修改都会改变引用所指向的对象;

5)可以有const指针,但是没有const引用;

6)指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能被改变;

7)指针可以有多级指针(**p),而引用至于一级;

8)指针和引用使用++运算符的意义不一样。


数据结构

顺序表与链表的区别

二叉树遍历方式

hash冲突及解决办法


图像处理

边缘检测算法

特征提取


机器学习

支持向量机(SVM)

监督学习、半监督学习、无监督学习、弱监督学习、迁移学习的含义

PCA算法的步骤


深度学习

参数初始化方法及区别

常用的深度学习模型

模型优化方法及特点

激活函数及优缺点

过拟合和欠拟合

梯度消失和梯度爆炸

Softmax公式

Dropout原理与实现

正负样本不均衡

网络层数确定

均值和方差

正则化方法

参数初始化方法

降维方法

经典模型结构

目标检测分类


其他

简单的自我介绍

职业规划

想问的问题


学习资料

深度学习入门

视觉识别课程

深度学习教材

深度学习模型

经典框架的Keras实现

TensorFlow中文社区

Keras中文文档

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值