笔试面试题汇总
文章平均质量分 65
流年冲淡时光
这个作者很懒,什么都没留下…
展开
-
实现一个Memcpy函数
首先我们必须明白memcpy函数在函数库里面的功能:函数简介:c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。另外这里要考虑内存重叠的情况。另外因为题中没有指定类型,一部人可能无从下手,这里使用void指针,这里介绍下:void的含义void即“无类型”,void原创 2016-08-08 17:59:05 · 1727 阅读 · 0 评论 -
为什么优先使用组合而不是继承
继承具有如下优点:实现新的类非常容易,因为基类的大部分功能都可以通过继承关系自动赋予派生类;修改或者扩展继承来的实现非常容易;只要修改父类,派生的类的行为就同时被修改了。初学面向对象编程的人会认为继承真是一个好东西,是实现复用的最好手段。但是随着应用的深入就会发现继承有很多缺点:继承破坏封装性。基类的很多内部细节都是对派生类可见的,因此这种复用是“白箱复用”;如果基类的实现发生改变,那么派生类的实转载 2016-12-29 18:41:32 · 1757 阅读 · 0 评论 -
TCP为什么三次握手以及服务端如何知道客服端异常断开
1=.[1]TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。如果采用两次的话,会出现下面这种情况。比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。传完东西后,断开。结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个原创 2016-12-29 18:35:58 · 640 阅读 · 0 评论 -
sizeof(struct)对齐方式
结构体是一种复合数据类型,通常编译器会自动的进行其成员变量的对齐,已提高数据存取的效率。在默认情况下,编译器为结构体的成员按照自然对齐(natural alignment)条方式分配存储空间,各个成员按照其声明顺序在存储器中顺序存储。自然对齐是指按照结构体中成员size最大的对齐,在cl编译器下可以使用#pragma pack(n)来指定结构体的对齐方式。默认对齐方式在默认原创 2016-10-08 19:43:05 · 738 阅读 · 0 评论 -
由字符串的相等判断延伸到堆和栈的区别
char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。首先要搞清楚编译程序占用的内存的分区形式:一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员原创 2016-10-08 19:16:40 · 356 阅读 · 0 评论 -
fwrite/fread/fopen和write/read/open
转载出处: http://blog.chinaunix.net/uid-26258259-id-4077259.htmlfread返回的是一个FILE结构指针而read返回的是一个int的文件号前者fopen/fread的实现是靠调用底层的open/read来实现的.fopen/fread是C标准的库函数,操作的对象是: file st转载 2016-10-17 22:36:55 · 464 阅读 · 0 评论 -
根据后序和中序建树
顺便写下后序和中序建树吧,都前面的大同小异。代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NU原创 2016-10-12 22:18:31 · 684 阅读 · 0 评论 -
根据前序和中序建立二叉树
之前一直以为很简单,碰见的话肯定能写出来,结果今天面试竟然碰到了,写了半天硬是没写对,很是尴尬,其实和我最后想的分别记录前序数组的前后位置,以及后序数组的左右位置是一样的,当时又感觉不太对,没敢写,结果别面试跳过了。代码:/** * Definition for binary tree * struct TreeNode { * int val; * Tre原创 2016-10-12 22:01:56 · 1356 阅读 · 0 评论 -
Linux下查看CPU使用率
转载出处:http://www.cnblogs.com/Wen-Man/archive/2011/04/04/2373771.html1.top使用权限:所有使用者使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]说明:即时显示process的动态d :改变显示的更新速度,或是在交谈式指令列( interactive com翻译 2016-10-12 21:25:34 · 414 阅读 · 0 评论 -
SQL语句各个部分的执行顺序
原文地址:http://www.cnblogs.com/wuguanglei/p/4198272.html写在前面的话:有时不理解SQL语句各个部分执行顺序,导致理解上出现偏差,或者是书写SQL语句时随心所欲,所以有必要了解一下sql语句的执行顺序。可以有时间自己写一个简单的数据库,理解会更加深入。下面就写写我的一些理解,以SQL SERVER2008为例,进行说明。 先看下面这条简转载 2016-10-12 21:03:27 · 531 阅读 · 0 评论 -
守护进程概念,以及怎么创建守护进程
转载出处:http://www.cnblogs.com/mickole/p/3188321.html一,守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护转载 2016-10-09 20:32:30 · 27280 阅读 · 1 评论 -
TCP和UDP的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应原创 2016-10-08 22:06:42 · 831 阅读 · 0 评论 -
请简述智能指针原理,并实现一个简单的智能指针。
关于智能指针,因为C++prime上面讲的比较清楚,这里只简单说下:智能指针是一种资源管理类,通过对原始指针进行封装,在资源管理对象进行析构时对指针指向的内存进行释放;通常使用引用计数方式进行管理,一个基本实现如下:class Object;class SmartPointer; class Counter{ friend class SmartPointer;public原创 2016-08-10 18:20:09 · 1772 阅读 · 0 评论 -
100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
首先必须清楚中位数的定义:中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。然后这个题答案:内存足够的情况: 可以使⽤用类似quick sort的思想进行原创 2016-08-10 18:02:25 · 1619 阅读 · 0 评论 -
给定N张扑克牌和一个随机函数,设计一个洗牌算法
这道题使用随机函数保证随机概率相等性,每选出一张牌,让它和当前位置的牌交换位置,保证后面的牌的概率性相等:具体来说就是:随机数组下标,不是牌,假定N=54,首先,我们有一个随机函数发生器,能够产生1-54之间的随机数,如何保证抽第一张牌是54中可能,抽第二张牌是53中可能,……可以这样做,假设扑克牌是一个54维的数组card, 我们要做的就是从这个数组中随机取一个元素,然后原创 2016-08-10 17:32:02 · 1578 阅读 · 0 评论 -
人人网笔试题第三题之找规律简单数论
选择题一通胡蒙,做了两道编程题,第三题不会,学的太差了,难受第三题是一个数论,之前数论题做得少,理论也懂,不会,先看代码:#include #include #include #include #include #include #include #include #include #include #include #include #pragma warnin原创 2017-03-19 22:53:03 · 684 阅读 · 0 评论