
C/C++笔试题目
tianmo2010
这个作者很懒,什么都没留下…
展开
-
Top K问题
Top K问题在数据分析中非常普遍的一个问题(在面试中也经常被问到),比如:从20亿个数字的文本中,找出最大的前100个。 解决Top K问题有两种思路,最直观:小顶堆(大顶堆 -> 最小100个数);较高效:Quick Select算法。 1. 堆 小顶堆(min-heap)有个重要的性质——每个结点的值均不大于其左右孩子结点的值,则堆顶元素即为整个堆的...原创 2012-03-25 17:55:48 · 2413 阅读 · 1 评论 -
不能在析构函数里面抛出异常
从语法上面讲,析构函数抛出异常是可以的,C++并没有禁止析构函数引发异常,但是C++不推荐这一做法,从析构函数中抛出异常是及其危险的。析构函数可能在对象正常结束生命周期时调用,也可能在有异常发生时从函数堆栈清理时调用。前一种情况抛出异常不会有无法预料的结果,可以正常捕获;但后一种情况下,因为函数发生了异常而导致函数的局部变量的析构函数被调用,析构函数又抛出异常,本来局部对象抛出的异常应该是转载 2013-03-22 14:27:02 · 2884 阅读 · 0 评论 -
构造函数调用虚函数
构造函数可以调用虚函数吗?语法上通过吗?语义上可以通过吗?C++是不允许虚构造函数。测试代码:class A { public: virtual A() { cout<<"sgsfsdfasf"; }private: int x;};int main(){ A原创 2013-03-22 14:31:05 · 3300 阅读 · 2 评论 -
构造函数失败
什么函数都有可能失败,构造函数也不另外,比如new一个对象或空间不成功。当构造函数失败的时候,其实很多时候我们不想这个对象被继续生成,这个时候就可以在构造函数里面抛出异常。C++规定构造函数抛出异常之后,对象将不被创建,析构函数也不会被执行,但已经创建成功的部分(比如一个类成员变量)会被部分逆序析构,不会产生内存泄漏。但有些资源需要在抛出异常前自己清理掉,比如打开成功的一个文件,最好关闭掉再抛出异转载 2013-03-22 14:27:54 · 1620 阅读 · 0 评论 -
delete []是如何得知数组个数的
通常在delete[]一个数组时,编译器要按顺序作如下两件事情: 1. 对每个数组元素调用析构函数 2. 释放对象数组所占内存 注意这是彼此独立的两步. 在第2步.编译器只需简单地把数组首地址告诉操作系统,操作系统内部有内存申请情况的记录(每个申请内存段的首地址,长度,etc..),因此会正确地释放掉内存.注意整个数组所占内存是一次释放掉的,而不是每个元素释放一次.转载 2013-04-03 12:37:32 · 1409 阅读 · 0 评论 -
2013华为校园招聘机试题
/*题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数: void stringFilter(const char *pInputStr, long lInputLen, char原创 2012-09-14 16:30:31 · 1816 阅读 · 0 评论 -
define和inline 的区别
define:定义预编译时处理的宏; 只进行简单的字符替换,无类型检测typedef:定义类型别名 用于处理复杂类型 例: typedef int A; 则:A a; //定义a为intinline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝 既为提出申请,不一定会成功 static一、产生背景引出原因:函数内原创 2012-08-28 12:02:16 · 1506 阅读 · 0 评论 -
C++异常处理
异常:程序执行期间,可检测到的不正常情况。例如:0作除数;数组下标越界;打开不存在的文件;远程机器连接超时;malloc失败等等。程序的两种状态:正常状态和异常状态,发生不正常情况后,进入异常状态,从当前函数开始,按调用链的相反次序,查找处理该异常的程序片断。1.throw 表达式语义:用表达式的值生成一个对象(异常对象),程序进入异常状态。原创 2012-09-03 17:41:09 · 1458 阅读 · 0 评论 -
深入理解C++的new()
new和delete运算符用于动态分配和撤销内存的运算符new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a.原创 2011-11-18 20:55:11 · 1220 阅读 · 0 评论 -
GET与POST区别
HTTP定义了与服务器交互的不同方法,最基本的方法是 GET和 POST.HTTP-GET和HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。每个HTTP-GET和HTTP-POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。 HT原创 2011-05-31 13:00:00 · 1247 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不原创 2011-10-08 16:40:06 · 922 阅读 · 0 评论 -
最新面试题集锦
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思原创 2012-02-16 21:39:11 · 2120 阅读 · 0 评论 -
不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者
已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。 答案:int max(int a,int b){return (a+b+abs(a-b))/2;}原创 2011-09-02 18:20:07 · 985 阅读 · 0 评论 -
c++中类型转换机制
类型转换机制:可以分为隐式类型转换和显示类型转换,显示类型转换也称为强制类型转换(cast),有四种名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。隐式的类型转换比较常见,在混合的类型表达式中经常发生。最简单的为整型提升,对于所有比int小的整型,包括char、signed char、unsigned原创 2013-03-22 15:09:35 · 2496 阅读 · 0 评论 -
C++异常机制
异常就是运行时出现出现的不正常(没说一样),例如系统运行时耗尽了内存或遇到意外的非法输入。C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信。C++的异常处理机制包括:throw表达式,错误检测部分使用这种表达式来说明遇到了不可处理的错误,可以说throw引发(raise)了异常。try块(try block),转载 2013-03-22 15:12:00 · 1295 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数作用及用途?什么时候需要自定义拷贝构造函数?也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。 为了说明复制构造函数作用,我先说说我们在编程时会遇到的一转载 2013-03-22 16:24:50 · 1639 阅读 · 0 评论 -
malloc函数的一种简单的原理性实现
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的转载 2013-10-13 18:35:24 · 1546 阅读 · 0 评论 -
逆波兰式(后缀式)详解
1、建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,原创 2011-09-23 18:02:35 · 5755 阅读 · 1 评论 -
有效逻辑地址所对应的物理地址
一、有效逻辑地址所对应的物理地址的计算方法1.逻辑地址/页面大小=页号2.逻辑地址 mod 页面大小=页内偏移3.通过页号查找页表得到对应的物理区块4.物理地址=物理区块x页大小+页内偏移二、分页机制的作用 分页机制是在段机制之后进行的,它进一步将线性地址转换为物理地址。 80386使用4K字节大小的页,且每页的起始地址都被4K整除。因此,80386原创 2013-04-22 11:12:57 · 10605 阅读 · 3 评论 -
阿里巴巴笔试题-2011年
例如已知数组a前半部分a[0,mid - 1],后半部分a[mid,num-1],现前半部分和后半部分均已排好序。要求:实现a数组的从小到大排序。空间复杂度为O(1).(百度笔试)#include void MergeIntData(int *a, const unsigned int num, const unsigned int mid){ if(mid < 0 || num转载 2011-09-11 13:33:11 · 1818 阅读 · 0 评论 -
百度笔试题目集合
①现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来。 解决办法:一)用一个32位的整数32位表示32个数,1亿/32 = 3125000,使用3.125 * 4M byte空间即可保存1亿个数,即index[3125000].二)对于数n,(n-1) / 32 为其在数组中的下标,table[(n - 1) % 32]与数原创 2011-08-15 12:53:05 · 12062 阅读 · 0 评论 -
虚函数实现原理
面试官常常拿这个题目考那种简历上面写着精通C++的面试者(当然,一般是应届生)。首先准备一页白纸,在它的A面写上这样一段代码: class A { public: void function(){printf("Hello World");} }; …… A* p1 = N原创 2011-10-24 15:59:21 · 1582 阅读 · 1 评论 -
session与cookie的详解
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用C原创 2012-05-08 20:50:45 · 1171 阅读 · 0 评论 -
static_cast、dynamic_cast reinterpret_cast和const_强制类型转换
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。转载 2012-04-24 15:55:02 · 859 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
一、常用的算法的时间复杂度和空间复杂度二、算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句原创 2013-06-05 18:25:59 · 1999 阅读 · 0 评论 -
腾讯、百度、网易游戏、华为Offer及笔经面经
面试完毕,已跟网易游戏签约。遂敲一份笔经面经,记录下面试经过。类似于用日记记录自己,同时希望对师弟师妹有一定帮助。不是炫耀,只是希望攒RP,希望各位不要鄙视我。正所谓“饮水思源”。小弟来自广州华南理工大学,计算机科学与工程学院。给华工计算机打一个广告吧,呵呵。。。一腾讯(2011 4月):(所报职位:后台开发工程师 – 深圳)腾讯是我一直准备的公司,所以对笔试的知识点及面试转载 2012-05-21 21:18:26 · 15509 阅读 · 1 评论 -
Linux内核进程调度schedule深入理解
一.说明本文以linux-2.4.10 为例主要分析Linux 进程调度模块中的schedule 函数及其相关的函数。另外相关的前提知识也会说明。默认系统平台是自己的i386 架构的pc。二.前提知识在进行schedule 分析之前有必要简单说明一下系统启动过程,内存分配使用等。这样才能自然过渡到schedule 模块。首先是Linux各个功能模块之间的依赖关系:转载 2013-06-13 16:40:25 · 7407 阅读 · 1 评论 -
智能指针以及智能指针类
一 智能指针的原理及实现当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同原创 2012-04-10 19:01:21 · 1565 阅读 · 0 评论 -
路由器和交换机的区别
交换机是一种基于MAC(网卡的硬件地址)识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。交换机主要是组成局域网,例如一个公司网络的搭建一般是使用交换机的,交换机不能转发数据包,也没有路由到目的地址.现在交换机也分为二层交换机和三层交换机,三层交换机具有了路原创 2011-09-23 18:05:00 · 1086 阅读 · 0 评论 -
C/C++中几个宏的总结
有人视宏为洪水猛兽,甚至要求完全从C/C++中摒弃,有人则认为宏为至尊宝典,在逻辑代码中都大量使用。个人认为这是个仁者见仁智者见智的问题,摒弃就没必要了,看看宏在MFC和ATL中的一些经典应用,你会发现如果不使用宏来实现一些消息映射和对象映射神马的那将让“苦逼”程序员多花费多少宝贵的时间。当然也不能滥用,尤其是尽量不要在逻辑代码中使用,宏中的逻辑出问题后,调试时候的痛苦你就真的会发现原来程序员真的原创 2012-05-09 19:17:12 · 1270 阅读 · 0 评论 -
C++虚函数的原理及实现
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(原创 2011-08-16 12:41:29 · 1107 阅读 · 1 评论 -
程序员笔试知识点整理
0、常考基础必知必会A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法; B. 查找:哈希查找、二叉树查找、折半查找的对比,哈希映射和哈希表的区别?C. 链表和数组的区别,在什么情况下用链表什么情况下用数组? D. 栈和队列的区别?E. 多态,举例说明;overload和override的区别? F. 字符串有关的函数,比如让你写一个拷贝字符串的函数啊,或原创 2011-09-25 18:37:24 · 5989 阅读 · 4 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后转载 2012-03-27 19:47:08 · 1715 阅读 · 1 评论 -
Violate的应用和作用
以前也是知道violate 的作用,是可变的意思,因为变量可能发生意想不到的变化,用到的时候一定要用最新的数据, 因为很多编译器在编译程序的过程是对程序进行优化,以提高运行效率,这就可能出现这样的情况,用的到变量值不是最新的,而是已经存在在缓存中的值,这样就可能出现莫名其妙的原创 2011-10-10 13:46:25 · 3874 阅读 · 0 评论 -
九月腾讯,创新工场,淘宝等公司最新面试十三题
引言 曾记否,去年的10月份也同此刻一样,是找工作的高峰期,本博客便是最初由整理微软等公司面试题而发展而来的。如今,又即将迈入求职高峰期--10月份,而本人也正在找下一份工作中,所以,也不免关注了网上和我个人建的算法群Algorithms1-12群内朋友发布和讨转载 2011-10-04 20:40:58 · 1847 阅读 · 0 评论 -
笔试面试题整理,慢慢搜集....
现在的公司招聘,都要笔试面试.如果你不是那种编程功底非常深厚的人,又不好好准备一番,在笔试面试中往往会处于被动局面.虽然有些笔试题是故意为难我们,有点钻牛角尖.但是很多笔试题面试题确实能够很好地看出我们的基础. 在这里,我就略去那些钻牛角尖的题.从csdn论坛我近转载 2011-10-02 14:47:51 · 887 阅读 · 0 评论 -
珍藏版、微软等数据结构+算法面试100题全部出炉
微软等公司数据结构+算法面试100题首次完整亮相 ---100题V0.1版最终完成 作者:July、2010年12月6日。说明:关于此100道面试题的所有一切详情,包括答案,资源下载,帖子维护,答案更新,转载 2011-10-01 20:39:15 · 1402 阅读 · 0 评论 -
位运算详解与实例
多字节转换为单字节#include int main(){ //int data = 65793; int data = 16843009; char data_one = data & 0xff; data = data>>8; char data_two = data & 0xff; data = data>>8; char data_three = data &原创 2011-11-08 20:07:08 · 912 阅读 · 0 评论 -
C++面试资料之问答题集合(找工作复习)
1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration)原创 2011-09-25 18:33:20 · 3086 阅读 · 0 评论 -
华为C语言笔试题集合
①华为笔试题搜集1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在原创 2011-08-14 16:07:58 · 39986 阅读 · 7 评论