IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 亿海蓝 C++开发工程师 -> 正文阅读

[数据结构与算法]亿海蓝 C++开发工程师

答题时间:45分钟。请将答案写在答题纸上。

一、C++基础

1.h头文件中的ifndef/define/endif的作用?

防止这个头文件被重复引用

2.new delete 与malloc free 的联系和区别?

区别:malloc/free是C/C++语言的标准库函数,无法满足动态管理对象的要求,就是不能动态分布空间,对象在创建的同时要自己构造函数,在消亡之前要自己析构函数;new/delete是C++的运算符,new能够自动分配空间大小。
联系:C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。

3.已知类String的原型为:

Class String
{
 Public:
   String(const char* str=NULL);         //普通构造函数
   String(const String& rhs);          //拷贝构造函数
   ~String(void);                  //析构函数
   String& operator=(const String& rhs);   //赋值操作符
Private:
  char* m_data;                  //用于保存字符串
};

请编写String类的上述4个函数。

//普通构造函数  
String::String(const char *str){
	if (str == NULL){
		m_data = new char[1];
		*m_data = '\0';
	}
	else{
		int len = strlen(str);
		m_data = new char[len + 1];
		strcpy(m_data, str);
	}
}
 
// String的析构函数  
String::~String(void){
	delete m_data;  
}

//拷贝构造函数  
String::String(const String &other){		 
	int len = strlen(other.m_data);
	m_data = new char[len + 1];  
	strcpy(m_data, other.m_data);
}
 
//赋值函数  
String & String::operator = (const String &other){
	if (this == &other)
		return *this; 
	if (m_data)
	    delete[] m_data;  
	int len = strlen(other.m_data);
	m_data = new char[len + 1];  
	strcpy(m_data, other.m_data);
	return *this;    
}

二、算法和数据结构

1.在全球范围内,划有10000个不同大小的多边形区域。同时,我们有大量坐标点,如何高效判断坐标点所归属的区域?请写出主要思路。

(不会)

2.有n个人围成一圈,顺序排号。要求从其中淘汰掉m人,从第一个人开始循环报数(1到3报数),凡报到3的人退出圈子,直到剩余n-m人。请编写算法代码(链表实现),输出剩余人员在圈中的次序。

#include<stdio.h>

int main(void){
	int i,array[100];
	int k=0;//报数
	int t=0;//退出人数
	int n;//总人数
	int *p;//指针
	int m;
	
	printf("Input m and n: ");
	scanf("%d %d",&m,&n);
	
	p=array;

	//编号 
	for(i=0;i<n;i++)
		*(p+i)=i+1; 
	
	i=0;
	while(t<n)
	{
		if( *(p+i) != 0)
			k++;
		
		if(k==m){
			k=0;
			printf("%d ",*(p+i));
			*(p+i)=0;
			t++;
		}
		i++;
		
		if(i==n)
			i=0;
	} 
	
	printf("\n");

	return 0; 
} 

三、网络和操作系统

1.通过信号量能沟通控制应用程序只能启动1个实例吗?为什么?控制只能启动3个如何实现?

答:可以只启动一个实例,因为可以信号量实现进程间的同步与互斥。
(不会)

2.简述TCP和UDP的区别。试举出几种Windows Socket的编程模型及适用场景。

TCP和UDP的区别:

  • 是否基于连接
    TCP是面向连接的协议,而UDP是无连接的协议。即TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。

  • 可靠性和有序性区别
    TCP提供交付保证(Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输),无差错,不丢失,不重复,且按序到达,也保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。
    UDP不提供任何有序性或序列性的保证。UDP尽最大努力交付,数据包将以任何可能的顺序到达。
    TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

  • 实时性
    UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

  • 协议首部大小
    TCP首部开销20字节; UDP的首部开销小,只有8个字节 。

  • 运行速度
    TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,毕竟TCP协议比UDP复杂。

  • 拥塞机制
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

  • 流模式(TCP)与数据报模式(UDP)
    TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。

  • 资源占用
    TCP对系统资源要求较多,UDP对系统资源要求较少。
    TCP被认为是重量级的协议,而与之相比,UDP协议则是一个轻量级的协议。因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。这也反映在用于承载元数据的头的大小。

  • 应用
    每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。基于UDP不需要建立连接,所以且适合多播的环境,UDP是大量使用在游戏和娱乐场所。

Windows Socket的编程模型及适用场景:

  • Select模型
  • 异步选择
  • 事件选择
  • 重叠I/O模型
  • 完成端口模型

详见CSDN文章:socket编程五种模型

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:42:57  更:2022-04-09 18:46:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:29:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码