
面试题
A.Crocodile
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于二叉树的面试题
//设计一个有getmin功能的栈class mystack{private: stackint> stackdata;//数据栈 stackint> stackmin;//返回最小值的栈public: void push(int num) { if (stackmin.empty())//如果辅助最小值栈为空,将数据压入辅助栈中转载 2017-05-19 21:54:09 · 250 阅读 · 0 评论 -
关于Linux内核的一些问题
1) Linux中主要有哪几种内核锁? Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。Linux中的信号量转载 2017-10-14 17:31:06 · 314 阅读 · 0 评论 -
TCP是如何保证数据的可靠传输的
TCP是如何保证数据的可靠传输:1、TCP在传输有效数据之前要求通信双方必须先握手,建立通信才可以进行数据传输!2、TCP的接收在接收到数据包之后会发送ack(可以理解为“回复消息”)给发送方,如果发送方未收到ack,会重发一遍!A给B发送数据,会有以下几种情况:1、B没有收到A发送的消息;==》B就不会给A回复ack;===>A就不会收到ack==》A会认为数据没有发送成功===原创 2017-09-28 09:28:05 · 1797 阅读 · 0 评论 -
TCP/IP的初步理解,TCP和UDP的区别
1.什么是TCP/IP协议TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他俩命名了。TCP/IP协议集包括应用层,传输层,网络层,网络访问层。其中应用层包括:超文本传输协议(HTTP):万维网的基本协议. 文件传输(TFTP简单文件传输协议): 远程登录(Telnet原创 2017-09-28 09:18:16 · 296 阅读 · 0 评论 -
指针和内存管理
1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。原创 2017-09-28 08:58:18 · 430 阅读 · 0 评论 -
Makefile初步理解
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。原创 2017-09-27 21:55:22 · 744 阅读 · 0 评论 -
C/C++中static关键字的作用
在C语言中static的作用如下第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static原创 2017-09-27 21:51:07 · 292 阅读 · 0 评论 -
C与C++的区别简答
C是一个结构化的语言,它是面向过程的。它的重点在于算法与数据结构,对于语言本身C是C++的一个子集,C程序的设计首要考虑的是如何通过一个过程对输入进行运算处理得到输出。而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或实现过程控制。所以C与C++的最大的区别在于他们用于解决问题的思想方法不一样,C+是面向对象的但是它不是原创 2017-09-27 21:48:53 · 426 阅读 · 0 评论 -
函数的可重入性理解
一、维基百科解释 1 若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即当该子程序正在运行时,可以再次 2 进入并执行它。若一个函数是可重入的,则该函数必须满足一下必要条件: 3 1、不能含有静态(全局)非常量数据。 4 5 2、不能返回静态(全局)非常量数据的地址。 6 7 3、只转载 2017-09-11 14:52:14 · 288 阅读 · 0 评论 -
Getmemory函数详解--内存操作的理解
题目:void GetMemory(char *p){p = (char *)malloc(100);}void Test(void){char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);}请问运行Test 函数会有什么样的结果?分析:程序崩溃。因为GetMem转载 2017-09-11 11:17:34 · 683 阅读 · 0 评论 -
对于GetMemory()函数
对于GetMemory()函数NO1void GetMemory(char *p){ p=(char *)malloc(100);}void Test(){ char * str=NULL; GetMemory(str); strcpy(str,"Hello world"); printf(str);} 实质:GetMem转载 2017-09-11 11:09:08 · 264 阅读 · 0 评论 -
下列关于线程调度的叙述中,错误的是()。
下列关于线程调度的叙述中,错误的是()。正确答案: B E 你的答案: A E F (错误)调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行一个线程由于某些原因进入阻转载 2017-09-11 10:59:07 · 2932 阅读 · 0 评论 -
什么是原子操作?Linux下有哪些原子操作API
所谓的原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就是说,它的最小的执行单位,不能有比它更小的执行单元,因此这里的原子实际是使用了物理学里物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/sam/atomic.h文件中,它们都是使用汇编语言实现,因为c语言并不能实现这样的操作。原子操作转载 2017-09-13 09:13:41 · 1405 阅读 · 0 评论 -
堆和栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教原创 2017-10-14 23:11:13 · 215 阅读 · 0 评论