哪吒规控算法实习生面试/10道|含解析
共 4337字,需浏览 9分钟
·
2023-08-16 19:26
10本七月在线内部电子书在文末,自取~
![](https://filescdn.proginn.com/6fc2ca3fc9bfca199a2c220664b19c13/4db2c4d777c969602afe19e881124ad1.webp)
![](https://filescdn.proginn.com/fca35a04ef4b4c0e1f21e25033423ebc/f4a3d6f1ee0607643f3385a14c15800d.webp)
![](https://filescdn.proginn.com/6fc2ca3fc9bfca199a2c220664b19c13/4db2c4d777c969602afe19e881124ad1.webp)
问题1:深度学习的激活函数有哪些
激活函数在深度学习中被用于引入非线性特性,常见的激活函数包括:
Sigmoid函数(Logistic函数)
Tanh函数(双曲正切函数)
ReLU函数(线性整流函数)
Leaky ReLU函数
Parametric ReLU函数(PReLU)
ELU函数(指数线性单元函数)
Swish函数
GELU函数(高斯误差线性单元函数)
Softmax函数(用于多类别分类任务的激活函数)
问题2:深度学习训练的时候爆显存的原因有什么
显存爆满通常是因为模型和数据导致的。主要原因包括:
模型大:使用过于庞大的模型,参数量太大,导致显存占用过多。
批量大小大:在训练过程中使用过大的批量大小,导致显存占用增加。
多样本输入:数据样本过多,导致在一次前向传播中需要处理的数据量过大。
多层级网络:深度较大的网络层级增加了计算量和显存需求。
问题3:Python的深浅拷贝
浅拷贝(Shallow Copy):创建一个新的对象,但是只复制原始对象的引用而不复制其子对象。新对象与原对象共享子对象。
深拷贝(Deep Copy):创建一个全新的对象,并递归复制原始对象及其所有子对象。新对象与原对象及其子对象完全独立。
在Python中,可以使用copy模块来实现深拷贝和浅拷贝。
问题4:三次握手
三次握手是TCP协议建立可靠连接的过程,确保客户端和服务器之间可以正确地发送和接收数据。其步骤如下:
第一次握手(SYN=1,seq=x):客户端发送一个带有SYN标志的数据包给服务器,并随机生成一个序列号x,表示请求建立连接。
第二次握手(SYN=1,ACK=1,ack=x+1,seq=y):服务器收到客户端的请求后,发送一个带有SYN和ACK标志的数据包给客户端,确认收到请求,并为自己也随机生成一个序列号y。
第三次握手(ACK=1,ack=y+1):客户端收到服务器的确认后,再发送一个带有ACK标志的数据包给服务器,表示连接已经建立。
经过三次握手,TCP连接建立完成,双方可以开始进行数据传输。
问题5:HTTP、HTTPS
HTTP(Hypertext Transfer Protocol):是一种用于传输超文本的协议。它是Web通信的基础,通过在客户端和服务器之间交换请求和响应来传输数据。然而,HTTP是明文协议,数据传输不加密,安全性较差。
HTTPS(Hypertext Transfer Protocol Secure):是HTTP的安全版本,通过使用SSL/TLS协议对HTTP的通信进行加密和认证,提供了更高的安全性。HTTPS在数据传输过程中对数据进行加密,确保通信过程中数据不被窃听或篡改。
问题6:TCP、UDP
TCP(Transmission Control Protocol):是一种面向连接的可靠传输协议。在数据传输之前,TCP会通过三次握手建立连接,并提供数据传输的流量控制、拥塞控制和错误校验等功能,确保数据可靠地传输到目标地址。
UDP(User Datagram Protocol):是一种面向无连接的不可靠传输协议。UDP在数据传输时不需要建立连接,数据包发送后不会进行确认,也不会进行重传。因此,UDP传输速度快,但不保证数据传输的可靠性。
问题7:数据链路层的作用
数据链路层是OSI模型中的第二层,负责在直连的网络节点之间传输数据帧。它的主要作用包括:
封装成帧:将网络层传递下来的数据包封装成数据帧,添加帧头和帧尾,便于在物理媒介上传输。
物理地址寻址:使用物理地址(MAC地址)来标识和定位设备,帮助数据帧在局域网内正确传送到目标设备。
媒体访问控制:协调多个设备共享同一物理媒介,避免冲突和碰撞。
差错检测:在传输过程中检测数据帧是否发生错误,并进行纠正。
问题8:进程与线程的区别
进程和线程都是程序执行的基本单元,但有以下区别:
进程:是独立的执行单位,拥有自己的独立内存空间和系统资源,进程间通信需要特殊的IPC机制,相互之间不会影响。
线程:是进程内的执行单位,共享所属进程的内存空间和资源,线程间通信相对容易,但也需要注意同步和资源竞争问题。
区别:
调度:在多线程环境下,线程的切换由操作系统的线程调度器负责。在多进程环境下,进程的切换由操作系统的进程调度器负责。线程切换比进程切换开销小。
并发性:多个线程可以在同一进程内并发执行,共享进程的资源。而多个进程之间的并发执行需要通过进程间通信(IPC)来实现。
安全性:由于多个线程共享同一进程的资源,必须注意线程同步和资源竞争问题。多进程之间不共享资源,相对更安全,但需要通过IPC进行通信。
灵活性:线程之间的通信和数据共享相对简单,但需要考虑线程同步问题。进程间通信相对复杂,但可以更好地实现模块化和隔离。
总的来说,进程适用于多个任务需要相对独立运行且安全性要求高的情况。线程适用于需要共享大量数据且并发执行的情况,适合用于提高程序的执行效率和响应性能。
问题9:什么是堆?什么是完全二叉树?
堆:堆是一种特殊的数据结构,是一种经过排序的完全二叉树。在堆中,对于任意节点的值总是不小于(或不大于)其子节点的值,分别称为最大堆和最小堆。堆通常用于实现优先队列等数据结构。
完全二叉树:完全二叉树是一种二叉树,除了最后一层外,其他层的节点都被完全填满,并且最后一层的节点都靠左对齐。在完全二叉树中,从根节点到倒数第二层的节点都是满的,最后一层可能不满,但节点都尽可能地靠左排列。
问题10:路径规划算法有哪些?
路径规划算法是指寻找从起始点到目标点的最优路径或者避开障碍物的路径。常见的路径规划算法包括:
Dijkstra算法:用于求解单源最短路径问题,适用于权值非负的图。
A*算法(A star):结合了Dijkstra算法和启发式搜索,可以在权值非负的图中找到最短路径,并通过启发式函数(估计函数)加速搜索。
BFS算法(广度优先搜索):用于无权图的最短路径搜索。
DFS算法(深度优先搜索):用于图的遍历,不一定能找到最短路径。
RRT算法(Rapidly-exploring Random Tree):用于高维空间的路径规划,常用于机器人运动规划等。
PRM算法(Probabilistic Roadmap):基于采样的方法,适用于高维空间的路径规划。
这些算法在不同的应用场景下有不同的优势和适用性。路径规划算法的选择取决于具体问题的约束条件和需求。
免费送
扫码回复【999】免费领10本电子书
(或找七月在线其他老师领取)
点击“阅读原文”抢宠粉福利~