极限和导数的定义
极限:自变量在某个变化过程中,对应函数值无限接近于某个确定的数,这个数则为在这一变化中函数的极限。
导数:lim x趋于x0,f(x)-f(x0)/x-x0有意义。可以理解为函数的切线斜率,或者是变化率。
做项目时遇到什么阻碍?怎么解决
车牌和字符的目标检测和识别是分开进行还是端到端合成一个网络?
如果合成一个网络进行,由于字符占比小,整体识别精度比较差。所以最终采用了类似于RCNN的做法。目标检测的候选区域采用opencv的函数实现。
YOLO是可以整体做——毕设
C++纯虚函数,抽象类,虚基类
带有纯虚函数的类就是抽象类,抽象类不能实例化对象。派生类需要重写纯虚函数。
虚基类(虚继承)使多重继承的同名类只保存一个副本。避免产生二义性。
什么是操作系统
操作系统是管理计算机软硬件资源的管理软件。包括进程管理,内存管理,文件管理,磁盘管理,IO管理。
进程管理:先来先服务,短进程优先,高响应比优先(R=(等待时间+运行时间)/运行时间),时间片轮转,多级反馈队列(先调度高级队列进程再调度低级队列;同一级队列使用时间片轮转)
内存管理:整体上分为连续分配和非连续分配。
连续分配分为①固定分区:分配的内存每个区大小是固定的,因此可能会产生内部碎片②动态分区:分配的每个区大小正好和进程大小匹配,但是分区外会产生越来越多的外碎空间。首次适应,循环首次适应,最佳适应和最坏适应。
非连续分配分为页(内碎)、段(外碎)、段页式存储。
传输层的主要功能
传输层主要提供端到端的可靠通信,包含TCP和UDP。
UDP不提供重传和拥塞控制的。而TCP有重传机制(超时判断和发送冗余ACK来实现),拥塞控制(慢开始,拥塞避免算法,拥塞处理),流量控制(通过滑动窗口实现,发送窗口等于拥塞窗口和对方报文窗口的最小值)。
DNS基于UDP继续。
线程,堆,栈
线程是CPU调度的最小单位,线程共享进程的地址空间,每个线程有自己独立的栈空间。
一个进程对应一个堆,该进程中的线程都可以共享这个堆。平时开辟内存就是在堆中进行
堆中的对象销毁回收空间时会出现碎片问题,JVM中对应各种垃圾回收算法继续处理。
视频会议传输过程
数据传输过程是一个逐层封装再解封的过程,数据从应用层产生并添加当前层的控制信息,然后逐层下发,由当前网络的网关判断转发路线,物理链路传输到中间节点,由局域网传输到公网链路前,还需要进行NAT转换,把私有IP转化为公网IP;通过各个路由器之间的转发最终到达学校的机器,然后逐层向上解封最终在应用层的应用显示。
编译器
词法分析,语法分析,语义分析,中间代码生成,中间代码优化,目标代码生成。
词法分析:从左到右扫描字符,产生单词符号。包括正规式,正规文法,NFA,DFA转换
语法分析:自上而下LL1分析文法(从左到右根据符号串中的符号,来选择使用哪一个产生式进行向下推导),自下而上LR分析法(符号串中符号进入一个符号栈,如果栈中某个符号串能形成某个句柄,那么就用产生式左部非终结符来替代右部的符号串,最终归约到开始非终结符)。LR(1)多了向前搜索符集。
网络各层功能
链路层:数据分帧,实现无差错数据传输和点到点通信,这里点是指物理地址或者ip地址。
网络层:在网络上路由选择,拥塞控制。
数据仓库和数据库
数据库通常服务于业务,而数据仓库服务于查询和分析。比如说要分析过去几年某某商品的购买情况就需要数据仓库对历史数据进行分析,而不能使用数据库,因为一般数据库是服务于当前的业务的。
大数据和数据挖掘
大数据技术是指从各类信息中快速获得有价值信息的能力
数据挖掘是指从大量数据通过算法挖掘出隐藏信息的一种过程。根据过去的数据建立一个决策模型来预测未来的行为。
间断点
第一类间断点
可去间断点:左极限等于右极限,但是不等于函数值
跳跃间断点:左极限不等于右极限
第二类间断点
左右极限存在一个极限是无穷或者是振荡的。
图的存储方式
邻接矩阵:O( V 2 V^2 V2),适合稠密图存储
邻接表:O(V+E),适合稀疏图存储
十字链表:有向图,边节点中存放了这条边的头结点,尾节点,相同头结点的边节点的指针,相同尾节点的边节点指针。
临界多重表:无向图,解决邻接表中删除两个节点之间一条边的问题。
中断
中断隐指令
①关中断
②保存断点
③进入中断服务程序
中断程序
④保存现场和屏蔽字
⑤开中断
⑥执行中断服务程序
⑥关中断
⑦恢复现场和屏蔽字
⑧中断返回
进程和线程通信的机制
进程:管道,消息队列套接字,共享内存
线程:临界区,信号量,互斥量
死锁
死锁四个条件:①资源不可剥夺②请求保持③资源互斥④循环等待
机试
scanner.nextInt():读取下一个整数,剩下\n没有读取,因此读完整数后想要读取下一行字符串需要nextLine()
scanner.nextLine():返回回车键之前的string
while(scanner.hasNext()):判断是否有输入
StringBuilder.reverse():将字符串反转
弗洛伊德算法
void Floyd()
{
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(dis[i][k]+dis[k][j]<dis[i][j])
dis[i][j]=dis[i][k]+dis[k][j];
}