C语言面试笔试题,C开发面试题
c问题3。python Python中tuple和list的区别。Python元组类似于列表,只是元组元素不能修改。
元组包含括号(),列表包含花括号)。
4.4.python和C的区别,以及它们的应用场景有什么区别?1.运行效率:C Python
2.开发效率:Python C。
5.什么是二分法?从算法的角度来看,按目的普通搜索适用于数据量大的情况,但需要先对数据进行排序。
事实上,有些订单也可以分为两部分。
6.链表和数组的区别在于我最近用python的方法不多,所以我用基本实现中的标准安全数组和c的list array vector举例说明的数据结构的语义vector (vector) ——STL,你只能在vector的“前面”添加数据。
Deque ——在功能上类似于vector,但是可以在前端和后端添加数据。
List (list) 3354光标一次只能移动一步。如果你熟悉链表,STL的链表是双向链表。每个节点有两个指针,一个指向前一个链接,另一个指向后一个链接。
Set(集合)3354包含排序数据,这些数据的值必须是唯一的。
映射——排序后的元组集。map中的每个元素由两个值组成(where key)) key value,在map中必须是惟一的)用于排序或搜索,这个值可以在容器中检索。另一个值是与该元素相关联的值。比如可以找到数据,比如AR [43]= overwrite ,map可以使用AR ["banana"]= overwrite 这样的方法找到数据。当您想要获取元素的信息时,您可以通过输入元素的全名来轻松完成。
多点(multi-point) 3354类似于集合,但是值不必是唯一的。换句话说,有没有重复都无所谓。
Multiple(多个)——类似于multiple(多个),但是键值不必是唯一的。换句话说,有没有重复都无所谓。
串行容器
vector-"的基本数据结构是数组,list-"支持高速随机访问的基本数据结构是双向链表,deque-"的基本数据结构是一个中央控制器和多个缓冲栈和队列-"
数据结构是红黑树,规则集--“不可重复映射”--“不可重复多重映射”--“可重复多重映射--”是哈希表。Unordered _ set -不可重复的unordered _ map -不可重复的unordered _ multiset -可重复的unordered _ multimap -7。可重复的
对于操作系统来说,进程是整个现代操作系统的基础,操作系统在每个进程中执行任务。随着技术的发展,流程实现机制仍然划分资源繁琐,浪费时间,不需要执行精细的任务,也不需要为自己分配个体资源。因此,专用多任务技术创建了33,354个线程。thread的特点是不需要独立的资源就可以运行。这大大节省了资源开销和处理时间。
进程和线程的主要区别在于操作系统管理资源的方式不同。进程有独立的地址空间。一个进程崩溃后,保护模式不会影响其他进程,线程只是一个进程中不同的执行路径。线程有自己的栈和局部变量,但是线程之间没有单独的地址空间,所以多线程程序比多线程程序更健壮,但是在进程切换的时候会消耗资源,导致效率低下。但是在需要共享一些变量的并发操作中,只能使用线程,不能使用进程。
这些对比图像包括:
但是,在Linux上,只支持轻量级进程,不支持线程。对于Linux:
第一个进程是 init,PID为1。Init是唯一由系统内核直接运行的进程。Init另外,每个进程有父进程(ppid标记),每个进程有四个http://www.Sina.com/真实用户id (RUID)、实际组RGID)、有效用户id (EUID)、有效组ID(有效组ID、EGID)在Linux内核2.4版之前,线程的执行和管理完全是通过进程来实现的。从2.6版内核开始,可以实现独立线程。为了弥补不支持线程的缺点,Linux引入了线程组的概念。也就是说,组中第一个轻量级进程的PID存储在进程描述符的tgid字段中。Getpid(因为系统调用返回当前进程的tgid值而不是pid值,所以它在
所有线程共享同一个PID。
如果是从面试的角度,有哪些需要注意的点?
流程的执行过程是线性的。虽然中间会有中断或者停顿,但是进程所拥有的资源只是为线性执行进程服务的。一旦进程上下文切换,这些资源就受到保护。线程的变化只代表CPU执行进程的变化,没有进程所拥有的资源的变化。计算机中软硬件资源的分配与线程无关。线程只能共享自己进程的资源。进程有一个完整的虚拟地址空间,独立于线程。相反,线程是进程的一部分,没有自己的地址空间,与进程中的其他线程共享分配给该进程的所有资源。通常,线程在中执行时是同步且互斥的,因为它们共享同一进程的所有资源。8.简历上说熟悉TCP/UDP,说说TCP和UDP的区别(建议详谈一下,提一下大的特点)
TCP和UDP的区别
TCP到底有没有连接?面向连接?非面向连接?可靠和不可靠的应用程序传输大量数据。数据的速度有快有慢。TCP和UDP协议之间的差异概述:
1.TCP协议在传输数据段时要对数据段进行标记;UDP协议不支持
2.TCP协议可靠;UDP协议不可靠。
3.TCP是面向连接的;UDP协议采用无连接。
4.TCP协议负载高,采用虚电路;UDP采用无连接。
5.TCP协议的发送方应该确认接收方是否收到数据段(三次握手协议)
6.TCP协议采用窗口技术和流量控制。9.经典问题:TCP为什么要握手3次,2次,4次?(这两个问题之前腾讯也问过)https://www.zhihu.com/question/24853633
https://www.cr173.com/exam/Cisco_17954_1.html
在TCP/IP协议中,TCP提供可靠的连接服务,使用三次握手来建立连接。
第一次握手:当连接建立后,客户端向服务器发送一个syn包(syn=j),进入SYN_SEND状态,等待服务器的确认;
第二次握手:服务器收到syn包时,必须确认客户端的SYN(ack=j 1),自己发送一个SYN包(syn=k),即SYN ACK包。此时服务器进入SYN_RECV状态;
三次握手:客户端从服务器接收SYN+ACK包,并向服务器发送确认包ACK(ack=k 1)。这个包发出后,客户端和服务器进入建立状态,三次握手完成。
通过这种三次握手,客户端和服务器建立了可靠的双工连接,并开始传输数据。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
但是为什么一定要进行三次握手才能保证连接是双工的呢?一次不行吗?你不能做两次吗?我们以现实生活中两个人的语言交流为例,模拟三次握手。
第一次对话:
老婆A出去打酱油了。路上遇到一个朋友,B. A问“哥们,吃饭了吗?”
结果B当时正带着耳机听歌。他根本没听见,也没反应。一个念头:我跟你说话没声音。如果我不和你说话,我的交流就会失败。说明如果B不能接收到A的信息,沟通肯定会失败.
如果B听到了A说的话,那么第一次对话就成功了,然后第二次对话就发生了。
第二次对话:
b听到了A说的话,但他是外国人,中文不好。他不知道A是什么意思,也不知道怎么回答,就随口答了一句学过的中文:我上厕所了。a立马笑喷“去厕所吃饭”?道不同不相为谋,离你远点。沟通失败。解释当B没有做出正确的反应时,沟通失败。
如果B听到A的话,做出了正确的反应,也问:我吃了,你呢?然后第二次握手成功。
* *通过前两个对话,证明B能听懂A说的话,并能做出正确的反应。* *接下来,将进行第三次对话。
第三次对话:
就在A和B打了个招呼之后,突然他老婆叫了他一声,“你这个笨蛋,打了这么久的酱油,我回家再收拾你。”a是一辆外向的宝马,二话不说就跑回家了,把B晾在一边。乙心想:这是谁?嗯,我也要回家了。沟通失败。解释当A不能回应时,沟通失败。
如果A也做出了正确的回应:我也吃了。然后第三次对话成功了,两个人建立了顺畅的沟通渠道,然后就开始不断的聊天。
通过第二次和第三次的对话证明了甲能够听懂乙说的话,并且能做出正确的应答。
可见,三次握手的过程是两个人有效沟通的必要条件。
同理,我们可以对TCP为什么需要三次握手有相同的理解:
为了保证服务器能够接收到来自客户端的信息并做出正确的响应,进行了前两次握手,后两次握手是为了保证客户端能够接收到来自服务器的信息并做出正确的响应。
10.你通常使用数据库吗?你在项目中使用数据库吗?说说你对数据库的理解,以及如何使用。数据库系统原理
关系数据库设计理论
MYSQL数据库
数据库和文件系统的根本区别
主要区别是文件系统不能解决数据冗余和数据独立的问题,而数据库系统可以。数据库技术的主要目的是有效地管理和访问大量的数据资源,包括:提高数据共享,减少数据冗余,提供数据和应用的独立性。
(我来挑一个熟悉的数据库)
11.我问了一些sql语句(现场写的)(那些操纵表的人知道用什么,但是还没有写完整。面试官还安慰我hhh,说要多增删查改,这样的操作表很少。)
SQL语法
MySQL应该什么都知道。
12.谈谈对MySQL事务的理解(我回答的ACID的意思,关系的常见问题(脏读,不可重复读,更新丢失等。),并简单提及每个字母在Innodb中是如何保证的)。
事务指的是符合ACID特征的一组操作。您可以通过提交或带回滚的回滚来提交事务。
ACID
原子性(Atomicity)
事务被视为最小的不可分单元,事务的所有操作要么提交成功,要么在失败时回滚。
回滚可以通过使用撤销日志来实现,撤销日志记录了事务执行的修改操作,这些修改操作可以在回滚过程中反向执行。
一致性(一致性)
数据库在事务执行前后处于一致的状态。在一致状态下,所有事务都读取相同的数据并产生相同的结果。
隔离(隔离)
在最终提交之前,公司所做的更改对其他事务是不可见的。
耐用性(耐久性)
一旦事务被提交,它的更改将永远保存在数据库中。即使系统崩溃,事务执行的结果也不能丢失。
参考TCP三次握手过程
原始参考
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。