面试题
文章平均质量分 75
李逝水
这个作者很懒,什么都没留下…
展开
-
#error # ifndef的作用
# 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一个#if……#else转载 2013-11-02 15:17:38 · 711 阅读 · 0 评论 -
strcpy函数的实现
大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopyprint?char *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = ds转载 2013-10-13 14:05:30 · 520 阅读 · 0 评论 -
题目1507:不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入:输入可能包含多个测试样例。对于每个测试案例,输入为两个整数m和n(1输出:对应每个测试案例,输出m+n的值。样例输入:3 47 9样例输出:716 #includeus原创 2013-09-24 21:07:25 · 651 阅读 · 0 评论 -
题目1509:树中两个结点的最低公共祖先
题目描述:给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为一个数n(0其中每个测试样例包括两行,第一行为一个二叉树的先序遍历序列,其中左右子树若为空则用0代替,其中二叉树的结点个数node_num第二行为树中的两个结点的值m1与m2(0输出:对应每个原创 2013-09-24 20:44:57 · 662 阅读 · 0 评论 -
题目1508:把字符串转换成整数
题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1输出:对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数。若输入为一个非法的字符串,则输出“My God”。原创 2013-09-24 19:27:23 · 764 阅读 · 0 评论 -
题目1506:求1+2+3+...+n
题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1输出:对应每个测试案例,输出1+2+3+…+n的值。样例输入:35转载 2013-09-24 16:14:11 · 860 阅读 · 0 评论 -
题目1356:孩子们的游戏(圆圈中最后剩下的数)
题目描述:每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这原创 2013-09-24 15:32:57 · 624 阅读 · 0 评论 -
题目1504:把数组排成最小的数
题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为一个整数m (1输入的第二行包括m个正整数,其中每个正整数不超过10000000。输出原创 2013-09-22 20:17:02 · 441 阅读 · 0 评论 -
new 和delete的实现
通过了解发现,原来在new的内部实现中只涉及内存的分配,也就是只考虑malloc的使用,而关于调用构造函数的部分则是交由编译器处理,所以这里看不到调用构造函数的代码。 由malloc分配内存空间,然后判断是否分配,并发出bad_alloc的异常消息./*如果分配成功,返回指向内存的指针,否则。返回NULL,并抛出bad_alloc异常*/void *operator new(int s转载 2013-10-07 23:05:12 · 498 阅读 · 0 评论 -
题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
题目描述:亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求转载 2013-09-22 17:14:49 · 526 阅读 · 0 评论 -
题目1369:字符串的排列
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA原创 2013-09-22 14:48:58 · 649 阅读 · 0 评论 -
题目1371:最小的K个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入:每个测试案例包括2行:第一行为2个整数n,k(1第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。输出:对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。样例输入:8 4原创 2013-09-22 15:59:41 · 678 阅读 · 0 评论 -
STL中map、set的数据结构及底层实现
STL中map、set的数据结构及底层实现摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。STL map和原创 2013-10-13 14:32:02 · 864 阅读 · 0 评论 -
c/c++ 的内存机制
进 程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。一、Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么转载 2013-10-13 15:09:00 · 564 阅读 · 0 评论 -
嵌入式面试题
预处理器preprocessor:1.用预处理指令声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL这里考查的知识:1)#define语法的基本知识,比如不能以分号结束2)懂得预处理器将为我们计算常数表达式的值,因此,直接写出你是任何计算一年宗有多少秒而不是计算出实际的值,是更清晰而转载 2013-11-02 15:13:59 · 604 阅读 · 0 评论 -
string的四个默认函数
编写类String的构造函数、析构函数和赋值函数类String的原型为:class String{ public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~转载 2013-10-29 22:07:10 · 941 阅读 · 0 评论 -
怎么将一个十六进制数转变成十进制数
在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:view plaincopy to clipboardprint?char *ptr="123"; int n=0; n=a转载 2013-10-29 22:38:44 · 2035 阅读 · 0 评论 -
SQL数据库基本知识
SQL数据库基本知识 SQL数据库是关系数据库。 “事务”处理用户对数据库表格的修改和数据的操作,一次性完成的一组针对表的操作,要么全部成功,要么全部失败。日志是记录关系数库修改情况的笔记。关系数据库一般都是按照“先写日志”的方法来进行事务操作。 SQL语言全称结构化查询语言,功能包括了查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Con转载 2013-10-17 22:32:06 · 834 阅读 · 0 评论 -
SQL Server数据库基础知识归纳总结
SQL Server数据库基础知识归纳总结(2012-09-12 21:27:41)转载▼标签:sqlserverit分类: SQL1、数据库的“特点”:数据共享、数据完整性、数据独立性高、2、SQL的四个“系统数据库”:master、model、msdb、tempdb简称为“三M一T”;【master转载 2013-10-17 22:17:53 · 2032 阅读 · 0 评论 -
函数和存储过程的区别
函数和存储过程的区别本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现转载 2013-10-17 21:56:51 · 568 阅读 · 0 评论 -
线程同步的方法
用什么关键字修饰同步方法 ?用synchronized关键字修饰同步方法 同步有几种实现方法,都是什么?分别是synchronized,wait与notifywait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处转载 2013-10-14 21:00:47 · 393 阅读 · 0 评论 -
c++中的四种类型转换的区别
c++中的四种类型转换的区别 类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION; 但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换 成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生转载 2013-10-14 14:26:11 · 534 阅读 · 0 评论 -
k路归并 - 败者树实现
外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。 多路归并排序算法在常见数据结构书中都有涉及。从2路到多路(k路),增转载 2013-10-14 17:10:25 · 848 阅读 · 0 评论 -
虚析构函数
虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包转载 2013-10-14 14:52:58 · 485 阅读 · 0 评论 -
C++中explicit关键字的作用
C++中explicit关键字的作用explicit用来防止由构造函数定义的隐式转换。 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如: class things{ public: things(const std::string&name =""):转载 2013-10-14 14:48:10 · 513 阅读 · 0 评论 -
题目1367:二叉搜索树的后序遍历序列
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。输出:对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出转载 2013-09-21 22:34:48 · 488 阅读 · 0 评论 -
孤儿进程和僵尸进程
一、定义:什么是孤儿进程和僵尸进程 僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。注: 僵尸进程将会导致资源浪费,而孤儿则不会。原创 2013-10-03 20:42:32 · 379 阅读 · 0 评论 -
引起进程调度的原因
引起进程调度的原因(2008-11-26 22:27)引起进程调度的原因有以下几类, (1)正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费处理机资源。 (2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。 (3)执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程队列。 (4)执行中进程提出I/O请求后被阻塞转载 2013-10-03 21:17:58 · 6632 阅读 · 0 评论 -
题目1513:二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。。n保证是int范围内的一个整数。输出:对应每个测试案例,输出一个整数,代表输入的那个数中1的个数。样例输原创 2013-09-15 23:00:10 · 605 阅读 · 0 评论 -
题目1518:反转链表
题目描述:输入一个链表,反转链表后,输出链表的所有元素。(hint : 请务必使用链表)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(0输入的第二行包含n个整数t(0输出:对应每个测试案例,以此输出链表反转后的元素,如没有元素则输出NULL。样例输入:原创 2013-09-16 11:56:57 · 598 阅读 · 0 评论 -
希尔排序(shell)
思路:希尔(Shell)排序的基本思想是:先取一个小于n的整数d1作为第一个增量把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取得第二个增量d2重复上述的分组和排序,直至所取的增量di=1,即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种 分组插入方法。 一般取d1=n/2,di+1=di/2。如果结果为偶数,则加原创 2013-09-30 22:43:30 · 856 阅读 · 0 评论 -
题目1512:用两个栈实现队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:每个输入文件包含一个测试样例。对于每个测试样例,第一行输入一个n(1接下来的n行,每行输入一个队列操作:1. PUSH X 向队列中push一个整数x(x>=0)2. POP 从队列中pop一个数。输出:对应每个测试案原创 2013-09-15 20:00:24 · 574 阅读 · 0 评论 -
大端和小端(Big endian and Little endian) 一、大端和小端的问题
大端和小端(Big endian and Little endian)一、大端和小端的问题对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)。例如,假设从内存地址转载 2013-09-30 23:11:02 · 748 阅读 · 0 评论 -
任一给4个正整数,求出它的所有加和的总数。并按相应的格式打印出来
任一给4个正整数,求出它的所有加和的总数。并按相应的格式打印出来 如:1,2,3,4 共有加和数10种。 结果打印如下: 和为1有1种 1=1; 和为2有1种 2=2; ... 和为6有2种 6=1+2+3; 6=2+4; ... 和为10有1种 10=1+2+3+4; #include#includeusing nam原创 2013-09-30 21:36:16 · 721 阅读 · 0 评论 -
题目1386:旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数,其中每个整数a的范围是(1输出:对应每个原创 2013-09-15 21:10:01 · 685 阅读 · 0 评论 -
轮询调度算法(Round-Robin Scheduling)
轮询调度算法(Round-Robin Scheduling) 2010-06-23 15:10:28| 分类: 默认分类|字号 订阅毫无疑问,随着互联网、移动网络接入成本的降低,互联网正在日益深入地走入我们的生活,越来越成为人们获取信息的高效平台,ICP行业也顺势呈现出强劲的成长趋势,成为互联网迅猛发展形势下最大的受益者,也直接促成了从web1.0到web2.0原创 2013-09-29 16:48:48 · 1281 阅读 · 0 评论 -
10^n个整数(亿级)的排序 .
http://blog.csdn.net/guyulongcs/article/details/7520467转载 2013-09-30 15:47:30 · 624 阅读 · 0 评论 -
静态链接与动态链接的区别
静态链接与动态链接的区别动态链接库、静态库、import库区别动态链接库(Dynamic Linked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传转载 2013-09-29 16:41:06 · 480 阅读 · 0 评论 -
逻辑思维题
【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。答:1.先将6升的杯子装满,在倒入5升的杯子里,那么6升的杯子剩1升。2.将5升的杯子里面的水倒掉,将6升杯子里面的水倒入5升的杯子里面,这是6升杯子为空,5升的杯子里面有1升水。3.将6升的杯子装满,倒入5升的杯子里面,这是6升的杯子里面由2升水,5升的杯子原创 2013-06-27 10:04:35 · 866 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和k(0输入的第二行包括n个数t(1输出:对应每个测试案例,若有结果,输出相应的查找结果。否则,输出NULL。样例输入:原创 2013-09-16 10:42:30 · 558 阅读 · 0 评论