C/C++
文章平均质量分 64
eten
这个作者很懒,什么都没留下…
展开
-
美团云计算方面面试题
1、Linux进程间的通信方式?两个进程是如何来共享内存的?两个进程如何通过信号量通信?(1)Linux下进程间通信的方式有: 管道(有名/无名) 、消息、信号、信号量、共享内存、邮箱、socket。(2)Linux下共享内存是进程间通信的方式之一,共享内存允许两个或多个进程访问同一块内存,比如像 malloc函数 向不同的进程返回执行同一块物理内存区域的指针。当一个进程改变了这块原创 2013-03-25 21:17:08 · 8150 阅读 · 0 评论 -
关于数组的几道面试题
集锦查看连接http://blog.csdn.net/huangxy10/article/details/7943823转载 2012-10-31 15:44:59 · 1723 阅读 · 0 评论 -
[程序员面试题]C/C++中static的作用
面试题:static有什么作用?答:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数 一、 定义全局静态变量 :在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点:(1) 在全局数据区内分配内存(2) 如果没有初始化,其默认值为0(3) 该变量原创 2012-10-18 14:02:43 · 19642 阅读 · 0 评论 -
堆和栈的区别【转过无数次的文章】
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回转载 2012-10-18 10:10:20 · 1165 阅读 · 0 评论 -
海量数据处理常用思路和方法
大数据量,海量数据 处理方法总结大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优转载 2012-04-22 18:36:56 · 1151 阅读 · 0 评论 -
C++多态 虚(纯虚)函数 绑定详解及实例分析
多态的概念C++多态即为:多态即为多种形式或形态,在编程语言中描述为同一种操作,可以有多种实现形式!C++中多态产生的必要条件:1、继承2、要求有虚函数3、要求有父类指针或引用指向派生类的对象虚函数、纯虚函数C++为实现多态引入虚函数、纯虚函数的概念!虚函数:在类的函数前边加上 virtual 即可,这样这个函数就变为你想要override的函数!当你引用基类的原创 2012-09-27 17:27:36 · 1397 阅读 · 0 评论 -
[程序员面试题]memcpy的实现
#include #include using namespace std;void *mymemcpy(void *des,const void * src , int size){ char *d = (char*)des; char *s = (char*)src; if(d < s) while(size--) *d原创 2012-10-16 15:14:36 · 1747 阅读 · 0 评论 -
[搜狗笔试]宏定义实现数据交换
#include using namespace std;//单行写#define swapdata1(a,b) (a)=(a)^(b),(b)=(a)^(b),(a)=(a)^(b);#define swapdata2(a,b) {(a)=(a)^(b),(b)=(a)^(b),(a)=(a)^(b);}#define swapdata3(a,b) {int temp;tem原创 2012-10-16 14:51:35 · 1269 阅读 · 0 评论 -
[百度笔试题]一个简单的递归实现
由 a-z 0-9 字符构成的三位数密码,要求打印出所有的密码。#include #include #include #include using namespace std;char data[] = "abcd";int len = strlen(data);char outa[4] = "";//memset(outa,0,sizeof(outa));void pri原创 2012-10-13 15:15:32 · 1298 阅读 · 0 评论 -
i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例
我们通常在写for循环 的时候,要实现变量 i 的自增 1 ;往往会在i++ 和++i中随便挑一种写,对于i++和++i的理解,我们往往停留在返回的值的不同,其实i++与++i在实现效率上也有一定的不同(不考虑编译器优化的原因)。++i的实现效率更高解释如下:i++ (在C++中) 在实现的时候,系统会产生一个 local object class INT的临时变量 用于存储原有的数据原创 2012-10-23 10:50:54 · 4269 阅读 · 1 评论 -
私有构造函数以及C++单例模型
一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员。C++类的构造函数一般不应该是私有函数,因为私有函数不能被其他类或者全局函数所使用。而创建C++实例需要调用构造函数。所以如果构造函数是私有函数的话,除了类自己的方法之外,其他类不能构造这个类的实例。一般来说,类做出来就是让其他类使用的,而使用一个类必须先构造它的实例。所以转载 2012-10-23 16:26:10 · 2006 阅读 · 0 评论 -
[程序员面试]C++虚函数表详细解释及实例分析
C++的虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖(override)的问题,保证其能真实的反应实际的函数。这样,在有虚函数的类的实例中这张表被分配在了这个实例的内存中,所以当我们用父类的指针操作一个子类的时候,这张虚函数表就显得尤为重要了,他就像一个地图转载 2012-10-01 11:55:33 · 10007 阅读 · 4 评论 -
C/C++程序员面试题集
2013年3月20日今天偶然间看到一个关于C++面试的博客,里边介绍的很基础很全面,基本上涵盖了我这半年多来面试时所遇到的各种问题,链接如下:http://edu.yesky.com/84/3041584.shtml2012年10月18号百度PC客户端岗位一面电话面试面试题:前奏:因为阿里巴巴的面试不能由大连调北京,我就风尘扑扑的从北京回到大原创 2012-10-25 17:14:19 · 20898 阅读 · 2 评论 -
STL sort原理及用法详解
排序的算法有很多种,在我们平时的编程中,我们很多时候会用的着排序,这些时候我们每次都要自己来实现吗?未必,C++标准模版库为我们提供了这样一个函数实现 sort(),用来满足我们日常对排序的需求。标准模版库中sort函数包含在头文件 中,std::sort()default (1) template void sort (RandomAccessIterator first,原创 2013-03-09 18:45:06 · 15835 阅读 · 3 评论 -
C++ 复制构造函数
C++ primer复制构造函数:只有单个形参,而且该形参是对本类类型对象的引用(常为const修饰,只读),这样的构造函数称为 复制构造函数。与默认的构造函数一样,复制构造函数可由编译器隐式调用。复制构造函数用于:1、根据另一个同类型的对象显式 或 隐式 初始化一个对象;2、复制一个对象,将它作为实参传递给一个函数;3、从函数返回时复制一个对象4、初始化顺原创 2013-03-11 12:51:32 · 1363 阅读 · 0 评论 -
C++内存分配总结
内存分配方式:1、C++内部提供 new/delete malloc/free 来实现内存分配new malloc 实现内存分配通过维护一个链表来实现对动态内存的管理,链表的每个节点管理一块已分配 或者 未分配的内存单元,在内存分配的过程中涉及到几个步骤 : 遍历链表(或空闲块链表) -> 根据相应的策略查找内存块 -> 分配或者分割内存块,并重新修改链表;内存回收的步骤: 查找原创 2013-03-11 14:21:43 · 1449 阅读 · 0 评论 -
链表头结点存在的意义
数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。作用1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.2、是为了方便单链表的特殊操作,插入在表头或者删转载 2013-02-22 15:03:38 · 27406 阅读 · 0 评论 -
Java 与 C++的内存回收机制
1、C++的内存回收机制当我们使用new为一个对象分配了空间之后,在这个对象结束使用之后,我们必须人为的去释放这块内存(delete)。2、Java的内存回收机制如下边一段代码: public void funTest(){ String str = new String("Hello World!"); }//str 变量的作用域当用new 创建一个Ja原创 2012-11-16 11:29:38 · 4365 阅读 · 0 评论 -
多线程和多进程的区别(小结)
总结的很好,学习下:http://blog.csdn.net/hairetz/article/details/4281931/很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但转载 2012-11-04 23:00:20 · 1660 阅读 · 0 评论 -
堆(heap)和栈(stack)、内存泄漏(memory leak)和内存溢出
简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中转载 2012-11-04 23:08:36 · 1853 阅读 · 0 评论 -
字符串朴素匹配算法
#include #include //朴素匹配算法using namespace std;char str[] ="abcacbbc";char pattern[] ="cbbc";int index(){ int slen = strlen(str); int plen = strlen(pattern); //cout<< int i,j,k原创 2012-10-10 13:58:51 · 920 阅读 · 0 评论 -
如何处理散列冲突
散列表中散列冲突是一种必然,既然不能回避他,我们应该怎么处理散列冲突呢? 1、开放寻址法根据探查序列的不同分为:线性探查、二次探查、以及双重探查2、再次Hash法当出现hash冲突时,使用第二个、第三个等等hash函数来计算下一个位置,但是这样的计算时间扩大3、链地址法4、设置公共溢出区详细请参考:http://www.cnblogs.com/jillzhang/原创 2012-10-09 15:06:08 · 2152 阅读 · 0 评论 -
std::map 通过遍历删除满足某些条件元素的两种方式
方法一:[cpp] view plaincopystd::map mapTest; bool TestVal(const std::string & val); ...... std::map::iterator it = mapTest.begin(); while(it != mapTest.end()) { if(TestVal(转载 2012-07-31 21:53:03 · 2109 阅读 · 0 评论 -
c++面向对象编程必备“良方”
前言:c++面向对象中的繁琐机制,不得不让你在编程中频频“犯病”,找错误,找bug,困扰,是你的病源所在,本人虽不是什么“良医”, 却也算是总结出以下“良方”。注:难免会有记忆上的遗漏,知识上的不够,遗漏之处还需大家来补充啊!http://blog.csdn.net/zhanxinhang药方1 ☞ 必需时刻明白面向对象编程中要扮演的两个角色,一个就是你,类的设计者,一个就是用转载 2012-05-17 10:06:56 · 583 阅读 · 0 评论 -
运算符重载
定义格式返回类型 operator运算符(形式参数表) { 函数体 }参数个数的限定非成员函数: 单目运算符:参数表中只有一个参数; 双目运算符:参数表中只有两个参数成员函数: 单目运算符:参数表中没有参数; 双目运算符:参数表中只有一个参数不能重载的运算符1、不能重载的运算符有: ::, ., .*, ?:2原创 2012-05-31 17:38:24 · 623 阅读 · 0 评论 -
getchar()函数的作用
1、清除回车符2、查看程序中间结果3、一次向缓存读入一个字符4、getchar()是缓存输入函数,从键盘输入多个字符时: 将所有字符保存在键盘缓存区,直到遇到回车符,getchar()函数才从stdio流中读入一个字符;getch()是非缓存输入函数,键入一个字符就输出,没有缓存功能。详细说明如下:getchar()是在输入缓冲区顺序读入一个原创 2012-04-23 20:09:05 · 20967 阅读 · 3 评论 -
Qt事件机制浅析
Qt事件机制Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.。Qt事件的发生和处理成为程序运行的主线,存在于程序整个生命周期。Qt事件的类型很多, 常见的qt的事件如下:键盘事件: 按键按下和松开.鼠标事件: 鼠标移动,鼠标按键的按下和松开.拖放事件: 用鼠标进行拖放.滚轮事件: 鼠标滚轮滚动.绘屏事件: 重绘屏幕的某些部分.定时事件: 定时器到转载 2012-04-06 13:41:09 · 1310 阅读 · 0 评论 -
Qt 的信号与槽机制介绍
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、S转载 2012-04-06 13:29:51 · 1038 阅读 · 0 评论 -
QT中的SOCKET编程
转自:http://mylovejsj.blog.163.com/blog/static/38673975200892010842865/QT中的SOCKET编程2008-10-07 23:13http://hi.baidu.com/landuochong/blog/item/08268100cf5b6783e950cda9.html操作系统:ARM转载 2012-03-17 09:26:15 · 2106 阅读 · 0 评论 -
C++中两个类相互包含引用问题
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型class A{int i;B b;}class B{int i;A* a;}请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子:class A{int i;B b;}cl原创 2012-03-26 14:58:23 · 17933 阅读 · 2 评论 -
C/C++面试题
1.求下面函数的返回值(微软)int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}复制代码假定x = 9999. 答案:8思路:将x转化为2进制,看含有的1的原创 2012-09-02 19:10:19 · 1733 阅读 · 1 评论 -
如何提高C++效率
自从七十年代C语言诞生以来,一直以其灵活性、高效率和可移植性为软件开发人员所钟爱,成为系统软件开发的首选工具。而C++作为C语言的继承和发展,不仅保留了C语言的高度灵活、高效率和易于理解等诸多优点,还包含了几乎所有面向对象的特征,成为新一代软件系统构建的利器。相对来说,C语言是一种简洁的语言,所涉及的概念和元素比较少,主要是:宏(macro)、指针(pointer)、结构(struct)、转载 2012-02-25 16:43:59 · 2547 阅读 · 0 评论 -
三十分钟掌握STL
转自:http://net.pku.edu.cn/~yhf/UsingSTL.htm三十分钟掌握STL 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontac转载 2012-03-16 21:11:21 · 553 阅读 · 0 评论 -
Linux互斥锁的使用代码实现
#include #include #include #include //对临界区的保护问题void *fun1(void *arg);void *fun2(void *arg);int buffer = 0;pthread_mutex_t mutex;int running = 1;int main(void ){ pthread_t pt1; p原创 2012-10-03 11:51:23 · 7537 阅读 · 1 评论 -
小米2013校园招聘笔试题[转贴]
题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个。比如数组元素为【1, 2,4,5,6,4,2】,只有1,5,6这三个数字是唯一出现的,我们只需要输出1,5,6中的一个就行。由上篇博客我们可以清楚的想到,首先要使用异或去重,因为现在是 3 个出现1次的正整数,所以肯定存在 1 位 使得 这三个数分在两组,一组有两个出现1次的数据,另一组有1个出现1次转载 2012-10-02 19:53:03 · 4434 阅读 · 1 评论 -
C/C++常见面试题[转帖]
1. C中static有什么作用(1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和stat转载 2012-10-02 21:40:51 · 1065 阅读 · 0 评论 -
Google面试题:统计1~N中所包含的1的个数
题目:输入:一个正整数N,输出:要求输出从 1 ~ N 中所出现的 1 的个数,如12中所包含的 1 的数为: 1 、10、11、12 总共包含 5个 1 解法1:可以对从1~N的每个数字进行遍历,分别求出每个数字中所包含的1的个数,然后相加求和即可得出最后结果;如下代码:#include using namespace std;int coutOne(unsi原创 2012-10-02 13:37:43 · 2252 阅读 · 0 评论 -
MS/Google面试题:寻找丢失的数字
题目:有一组数字,从1到N,其中丢失了一个数字,且顺序也被打乱的存储在一个 size 为N-1的数组中要求:找出丢失的数字,最好能有程序,最好算法比较快BTW1:有很多种方法哦,据说O(n)的方法不止一种BTW2:扩展问题,如果丢失两个,并找出这两个数字;或者,丢失三个,找出三个中的任意一个数字即可BTW3:一定要小心溢出哦BTW4:最好不要多申请 N 多空间题目:原创 2012-10-02 18:28:42 · 1941 阅读 · 0 评论 -
Qt 中C++ static_cast 和 reinterpret_cast的区别
1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。因此,被做为隐式类型转换使用。比如: int i; float f = 166.7f; i = static_cast(f); 此时结果,i的值为166。 2、C++中的reinterpret_cast主要是将数据从一种类型的转换为另一种类型。所谓“通常为操作数的位模式提供较低层的重新解释”也就是转载 2012-03-11 18:28:54 · 3924 阅读 · 0 评论 -
宏与内联函数的优点与缺点
第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开原创 2012-08-25 09:25:02 · 4953 阅读 · 0 评论