面试题
race604
这个作者很懒,什么都没留下…
展开
-
《程序员面试宝典》中的一个错误
发现宝典中一个错误,题目如下:判断下面函数的输出1 void main()2 {3 unsigned int a = 0xFFFFFFF7;4 unsigned char i = (unsigned char)a;5 char* b =原创 2011-08-27 23:04:06 · 2673 阅读 · 2 评论 -
记录几个面试题
1. 不使用循环把十进制数转换成八进制数:int trans(int num, char* str, int len); (提示:使用递归,代码后面再补上)2. 非递归实现二叉树的后序遍历;http://blog.csdn.net/race604/article/details/69086403 进程之间的通信方式;http://zhidao.baidu.com/question/1450原创 2011-10-27 00:09:49 · 809 阅读 · 0 评论 -
二叉树的非递归遍历
在面试的时候被问到二叉树的非递归遍历,折腾很久还是没有正确的写出来。这里转载一篇文章,写的很详细。原文地址是:http://www.cnblogs.com/MichaelYin/archive/2010/12/23/1915316.html-----------------------------转载开始-------------------------------------------转载 2011-10-26 21:33:00 · 1095 阅读 · 0 评论 -
指针和引用的区别
1 非空区别:指针可以为空,而引用不能为空,应用必须在声明的时候,同时初始化。2 可修改区别:引用初始化后就不可以修改,从一而终。指针可以在需要的时候修改其指向的地址。3 合法性检查的区别:指针需要检查是否为空,而引用不需要4 应用场合的区别:因为前面的所述的指针和引用的区别,在应用场合也是不一样的,例如,存在指向不存在的对象的可能,或者能够在不同的时刻指向不同的对象,原创 2011-10-22 23:29:23 · 578 阅读 · 0 评论 -
pow(x,y)函数的实现算法
函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。这里有算法的原理剖析:http://www.diybl.com/course/3_program/c++/cppjs/2007114/83860.html算法的基本思想是,减少乘法次数,重复利用结算原创 2011-10-08 18:05:57 · 9966 阅读 · 2 评论 -
《程序员面试宝典》一些笔记(2)
在书中看到一些技巧的东西,方法都很巧妙,这里记录一下:1. 判断一个整数是否是2的N次方:方法:X&(X-1)上面的式子中,如果X为2的N次方,例如二进制1000,结果就会为0。这个方法非常巧妙,还可以用来判断一个整数中,二进制表示中1的个数,如下:1 int co原创 2011-08-28 11:19:34 · 748 阅读 · 0 评论 -
STL中Vector的内存释放问题
Vector是STL中最常见的模板之一,其内存是连续的。Vector的大小有size和capacity之别,内存可以动态增长。Vector调用clear()之后,只会把size设置为0,而内存空间并没有释放。 vector 中的内建有内存管理,当 vector 离开它的生原创 2011-10-16 22:08:26 · 5361 阅读 · 0 评论 -
Shell中的预定义变量
系统在ksh中预定义了许多和shell编程相关的变量,他们有:●$$ 当前执行的进程PID●$0 当前执行的shell文件名●$# 传递给shell程序的所有位置参数个数●$* 传递给shell程序的所有位置参数的值●$? 上一条命令执行的返回码 (0表示原创 2011-10-06 11:03:29 · 1778 阅读 · 0 评论 -
C中各类型的长度
记住如下原则: 1 ANSI C规定char类型一定是8位。 2 long类型的长度和cpu字长一样。 3 int长度没有规定,但是不比short短不比long长,并且linux上支持的所有体系中int长度目前都是32位。4 short和int类似,目前linux原创 2011-10-16 21:57:23 · 1117 阅读 · 0 评论 -
蓄水池抽样
随即抽样问题: 要求从N个元素中随机的抽取k个元素,其中N无法确定。是在 《计算机程序设计与艺术》 中看到的这个题目,书中只给出了解法,没给出证明。解决方法是叫Reservoir Sampling (蓄水池抽样) Init原创 2011-09-30 20:28:34 · 556 阅读 · 0 评论 -
类成员初始化顺序
类成员是按照它们在类里被声明的顺序进行初始化的,和它们在成员初始化列表中列出的顺序没一点关系。http://apps.hi.baidu.com/share/detail/31876752原创 2011-09-30 16:31:56 · 446 阅读 · 0 评论 -
"i++"和"++i"的区别
1 功能区别简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。而 a = ++i,相当于 i=i+1; a = i;先执行增1操作,再做表达式运算;而 a = i++,相当于 a = i; i=i+1;先执行表达式操作,再做增1操作;例如:int原创 2011-09-23 23:59:50 · 829 阅读 · 1 评论 -
《程序员面试宝典》一些笔记(1)
1. 判断下列程序输出1 void main()2 {3 int arr[] = {6,7,8,9,10};4 int *ptr = arr;5 *(ptr++) += 123;6 printf("%d\n", *(ptr))原创 2011-08-26 23:29:31 · 1071 阅读 · 0 评论 -
《程序员面试宝典》一些笔记(3)
这一篇写一些与宏定义相关的一些小问题,关于#define宏定义的一些需要注意的问题:宏定义是预处理指令,在预处理阶段,预处理期进行处理,只是简单的替换为定义内容;预处理会自动计算常量表达式,例如 #define M 10*12#define不能以分号结尾,还要把参数小原创 2011-08-28 22:46:11 · 621 阅读 · 0 评论 -
C++中可以在构造函数中调用另一个构造函数吗?
今天在面试的时候,写了一个类,自己在另一个构造函数中调用了另一个构造函数,面试官说,这样不行吧,你回去查查。后来回来一查,果然我写的有问题。下面一篇文章写的很好详细,我这里转过来,原文来自这里:http://www.cnblogs.com/chio/archive/2007/10/20/931043.html--------从这里开始转载---------题目如下:问下列代码的打印结果转载 2011-10-31 15:45:32 · 12499 阅读 · 0 评论