文章目录
- 一、C++语言
- 1、引用和指针的区别?
- 3、C++中指针参数传递与引用参数传递?
- 4、形参与实参的区别?
- 5、static的用法和作用?
- 6、静态变量什么时候初始化?
- 9、指针和const的用法?
- 11、extern用法?
- 13、深拷贝与浅拷贝?
- 14、C++模板是什么,底层怎么实现?
- 15、C语言struct和C++的struct区别?
- 34、介绍一下C++里面的多态?
- 35、用C语言实现C++的继承?
- 59、说说你对C和C++的看法,C和C++的区别?
- 60、C/C++的内存分配,详细说一下栈、堆、静态存储区?
- 61、堆与栈的区别?
- 62、野指针是什么,如何检测内存泄漏?
- 65、new和malloc的区别?
- 85、hello world程序开始到打印到屏幕的全过程?
- 86、模板函数与模板类的区别是什么?
- 87、为什么模板类一般放在一个.h文件中?
- 139、哪些函数不能是虚函数?
- 154、虚函数与纯虚函数的区别在于?
- 1、为什么会有虚函数?
- 二、操作系统
- 1、操作系统特点
- 2、什么是进程
- 2、什么是线程
- 3、进程与线程的区别(均可并发执行)
- 4、进程状态转换图
- 三、网络
- 1、物理层
- 2、数据链路层
- 3、网络层
- 1、路由器的功能
- 2、IP报文如何从下向上交付
- 3、IP(MAC)地址有什么用?为什么需要IP(MAC)地址?
- 4、ARP(地址解析)协议的作用?
- 5、NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数据包?
- 6、RIP路由协议?
- 7、为什么使用IP地址通信?
- 8、子网掩码有什么用?
- 9、子网划分的方法?
- 4、传输层
- 1、TCP协议有几大计时器?
- 2、详细说一下TCP协议,三次握手传输的内容,13种状态?
- 3、TCP为啥挥手要比握手多一次?
- 4、为什么一定要进行三次握手?
- 5、TCP与UDP的区别、应用场景都有哪些?
- 6、为什么UDP有时比TCP更有优势?
- 7、UDP一个包的大小最大能多大?
- 8、TCP粘包?
- 9、传输层功能?
- 10、TCP可靠性保证?
- 11、拥塞控制?
- 12、TCP流量控制?
- 13、流量控制与拥塞控制的区别?
- 14、time_wait与close_wait,time_wait状态持续多长时间、为什么会有time_wait状态?
- 15、time_wait为什么是2MSL的时间长度?
- 16、介绍一下ping的过程,分别用到了那些协议?
- 17、socket编程?
- 5、应用层
- 3、讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程?
- 4、http与https工作方式?
- 5、http协议、http和https的区别?
- 6、http状态码?
- 7、http1.0与http1.1的区别?
- 数据结构与算法
- 1、常用查找算法?具体实现?时空复杂度?
- 2、快速排序非递归如何实现?快排的优势?
- 3、图的常用算法?
一、C++语言
1、引用和指针的区别?
1、引用只是变量的别名
,不需要分配内存空间;指针是一个实体
,需要分配内存空间。
2、引用在定义的时候必须进行初始化
,且不能改变;指针在定义时不一定要初始化,且指向的空间可变。
3、引用访问一个变量是直接访问
,而指针访问一个变量是间接访问
。
4、作为参数时:传指针的实质是传值
,传递的是指针的地址;传引用的实质是传地址
,传递的是变量的地址。
3、C++中指针参数传递与引用参数传递?
1、指针传递本质上是值传递
,它传递的是一个地址值。值传递过程中:形参作为局部变量处理,会在栈中开辟内存空间以存放传递进来的实参,从而形成了实参的一个副本
。值传递的的特点:形参指针变了,实参指针不会变。
2、引用传递过程中:形参也作为局部变量在栈中开辟了内存空间,但是该空间存放的是实参的地址
;则被调函数对形参的任何操作都会被处理成间接寻址
。其特点:形参引用变了,实参也会改变。
3、引用传递与指针传递是不同的。虽然他们都在被调函数栈空间上开辟一个空间作为局部变量,但是引用传递会通过间接寻址的方式直接改变相关变量;而指针传递虽然会改变实参指针所指向的变量的值,但他无法改变实参指针的值。
如果想要改变实参指针的值,那就要使用指向指针的指针或者指针引用
。
4、从编译的角度来讲,程序在编译时分别将指针和引用添加到符号表(记录变量名以及变量所对应的地址)上,符号表生成之后就不可更改
:指针变量在符号表上对应的地址值为指针变量的地址值
;而引用变量在符号表上对应的地址值为引用对象的地址值
(与实参名字不同,地址相同)。 因此指针可以改变其指向的对象(指针变量的值可以改动),而引用对象则不可更改。
4、形参与实参的区别?
1、形参只有在被调用时才分配内存空间,调用结束时,即释放内存单元。因此,形参只在函数内部有效
。
2、实参应首先获得确定值
。其次实参和形参在数量上,类型上,顺序上应严格一致。
3、形参的值改变,不会影响实参的值。
4、值传递
:栈拷贝数据的过程,若值传递的对象是类对象或者是大的结构体对象,耗时较长,耗空较大。(传值);指针传递
:栈拷贝数据的过程,但是拷贝的数据是一个固定为4个字节的地址。(传值,传递的是地址值);引用传递
:栈拷贝数据的过程,但其是针对地址的,相当于为该数据所在地址起了一个别名。(传地址);效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递
。
5、static的用法和作用?
1、
2、
3、
6、静态变量什么时候初始化?
9、指针和const的用法?
11、extern用法?
13、深拷贝与浅拷贝?
14、C++模板是什么,底层怎么实现?
15、C语言struct和C++的struct区别?
34、介绍一下C++里面的多态?
35、用C语言实现C++的继承?
59、说说你对C和C++的看法,C和C++的区别?
60、C/C++的内存分配,详细说一下栈、堆、静态存储区?
61、堆与栈的区别?
62、野指针是什么,如何检测内存泄漏?
65、new和malloc的区别?
85、hello world程序开始到打印到屏幕的全过程?
86、模板函数与模板类的区别是什么?
87、为什么模板类一般放在一个.h文件中?
139、哪些函数不能是虚函数?
154、虚函数与纯虚函数的区别在于?
1、为什么会有虚函数?
二、操作系统
1、操作系统特点
并发性、共享性、虚拟性、不确定性
2、什么是进程
程序实例、资源分配、进程通信、基本状态、调度算法
1、一个应用程序一旦运行,便产生一个进程。进程可以看作是程序执行的一个实例。
2、进程是系统进行资源分配的最小单位,每个进程拥有独立的地址空间。
3、一个进程无法访问另一个进程的变量与数据结构,如果希望,需要进行进程间的通信。比如:管道、消息队列。
4、进程是程序的一次执行,该程序可以与其他程序并发执行。
5、进程有运行、阻塞、就绪三个基本状态。
6、进程调度算法:先来先服务、短作业优先、非抢占式优先、高响应比优先、时间片轮转法、抢占式优先。
2、什么是线程
1、线程是进程的一个实体,一条执行路径,比进程更小的独立运行的基本单位。
2、被成为轻量级进程,一个程序至少有一个进程,一个进程至少有一个线程。
3、进程与线程的区别(均可并发执行)
资源分配、健壮性、切换、独立性
1、同一进程的线程共享本进程的资源(地址空间),而进程之间的资源(地址空间)是独立的。
2、多进程比多线程健壮:一个进程崩溃,在保护模式下,不会对其他进程产生影响;但一个线程崩溃,整个进程崩溃。
3、涉及到频繁切换,使用线程要好于进程:进程切换,消耗资源大。
4、每个独立的进程都有一个程序入口和程序出口。但是线程不能独立执行,必须依赖于进程。
4、进程状态转换图
三、网络
1、物理层
2、数据链路层
3、网络层
1、路由器的功能
路由选择与分组转发
2、IP报文如何从下向上交付
1、物理层 》》 数据链路层 》》 网络层 》》 传输层 》》应用层(细分为:会话层、表示层、应用层)
2、二进制数据3 》》解出下一跳路由物理地址:数据3(MAC地址+数据2) 》》 解出ip地址:数据2(IP地址+数据1) 》》解出文件传输方式:数据1(TCP头+数据0) 》》应用层
3、高低电平信号 》》 PPP协议 》》IP协议 》》TCP/UDP协议 》》HTTP/FTP/DNS协议
其中:数据0(纯数据)<数据1<数据2 (仅数据量比较)
3、IP(MAC)地址有什么用?为什么需要IP(MAC)地址?
1、IP地址是在网络上分配给每台网络设备的32位数字标识。在Internet上是唯一的。
2、IP地址是网络层的地址,如果IP地址不可达,接着转发。计算机的IP地址可以变动,在WAN里面,IP地址不是唯一的。
1、MAC地址是网络设备的物理地址,是48位的地址。一个网卡的MAC地址是唯一的。
2、MAC地址是数据链路层的地址,如果MAC地址不可达,直接丢掉。在LAN里面,MAC地址是唯一的。
4、ARP(地址解析)协议的作用?
1、为了获取mac地址。通过广播的形式
2、工作在数据链路层与网络层之间。
3、工作原理:当主机要发送一个IP包时,首先会检查它的ARP高速缓存表(IP-MAC地址对应表)。若不存在,那么主机就会向网络广播一个ARP请求包(包内含有带查询的IP地址);若某一主机发现自己符合条件,就会回应一个ARP应答包;源主机拿到ARP应答包后,会更新自己的ARP高速缓存表。源主机根据ARP高速缓存表准备好数据链路层的数据帧发送工作。
5、NAT的原理,外网与内网或内网之间的通信中如何区分不同IP的数据包?
1、公有IP地址:面向互联网,即外网。私有IP地址:面向局域网,即内网。
2、NAT全称网络地址转换(network address translation)。允许一整个机构局域网以一个公用IP地址出现在互联网上;顾名思义:它是把内部私有IP地址翻译成合法的互联网IP地址。有效解决公网IP地址不足的问题。
3、可以只申请一个I合法P地址,就把整个局域网中的计算机接入互联网。
6、RIP路由协议?
1、工作在网络层,属于动态路由。
2、每个路由表项目包括三个内容:目的网络、距离、下一跳路由器。
7、为什么使用IP地址通信?
全世界存在着各式各样的网络,它们使用不同的硬件地址。要使得这些异构网络能够相互通信,就必须进行非常复杂的硬件地址转换工作,这几乎不可能。
8、子网掩码有什么用?
1、用来指明一个IP地址所表示的主机处于哪个子网中。他必须结合IP地址一起使用。
2、将某个IP地址划分成网络地址和主机地址两部分。
9、子网划分的方法?
1、传统子网划分:IP地址 = 网络号+主机号
2、子网掩码
3、CIDR,减少了传统分发的IP浪费。
4、传输层
1、TCP协议有几大计时器?
1、重传计时器:
2、持续计时器:
3、保活计时器:
4、时间等待计时器:
2、详细说一下TCP协议,三次握手传输的内容,13种状态?
1、重传计时器
3、TCP为啥挥手要比握手多一次?
4、为什么一定要进行三次握手?
5、TCP与UDP的区别、应用场景都有哪些?
6、为什么UDP有时比TCP更有优势?
为什么一定要进行三次握手?
7、UDP一个包的大小最大能多大?
8、TCP粘包?
9、传输层功能?
10、TCP可靠性保证?
11、拥塞控制?
12、TCP流量控制?
13、流量控制与拥塞控制的区别?
14、time_wait与close_wait,time_wait状态持续多长时间、为什么会有time_wait状态?
15、time_wait为什么是2MSL的时间长度?
16、介绍一下ping的过程,分别用到了那些协议?
17、socket编程?
5、应用层
3、讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程?
4、http与https工作方式?
5、http协议、http和https的区别?
6、http状态码?
7、http1.0与http1.1的区别?
数据结构与算法
1、常用查找算法?具体实现?时空复杂度?
稳定算法:插入排序、选择排序、冒泡排序、归并排序。
不稳定算法:希尔排序、堆排序、快速排序。
2、快速排序非递归如何实现?快排的优势?
3、图的常用算法?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)