面试用
文章平均质量分 90
JWZbskywz
这个作者很懒,什么都没留下…
展开
-
探讨i++和++i
最近笔者在调试代码时发现自己在对++运算符的理解上不够深入,导致一个不应有的bug的出现。在代码书中或课堂上我们都知道++i和i++在作为一个单独语句使用时没有区别,即相当于i=i+1; 而作为语句的一部分时,如a=++i; 和a=i++; ++i先执行加1操作,再执行赋值操作(因++在前),而i++是先执行赋值操作,再执行加1操作(因++在后)。但这种论述未将其中更深的运行机制讲出来,尤其是转载 2012-06-26 17:32:46 · 487 阅读 · 0 评论 -
二进制在数学中的妙用
十八世纪初,莱布尼茨发明了二进制数,当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用。二进制数以其工作可靠,运算简单,逻辑严密,容易实现等特点,成为了计算机的专用语言。在计算机科学和大量应用数学领域中,二进制记数法是必不可少的。在趣味数学方面,同样也有广泛的应用。让我们先来看一个经典的数学趣题:一工人工作7天,老板有一段黄金,每天要给工人1/7的黄金作为工资,老板只能切这段黄金2转载 2011-11-23 13:46:43 · 822 阅读 · 0 评论 -
位运算的应用和实例
位运算应用口诀清零取数要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概转载 2011-11-23 13:45:36 · 291 阅读 · 0 评论 -
程序员面试100题之十四:强大的和谐
实现一个挺高级的字符匹配算法:给一串很长字符串,要求找到符合要求的字符串,例如目的串:1231******3***2 ,12*****3 这些都要找出来,其实就是类似一些和谐系统。。。。。 这题的真正意思就是,给你一个目标串,如“123”,只要一个字符串里面同时包含1、2和3,那么这个字符串就匹配了。系统越和谐,说明错杀的可能行也就越大。加入目标串的长度为m,模式串的长度转载 2011-11-23 13:44:54 · 284 阅读 · 0 评论 -
程序员有趣的面试智力题
偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开关控制,三架飞机环游世界,用火柴和两根绳子测量45分钟之类的题目,火星得已经可以考古了,这里就不再说了。 1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能转载 2011-11-23 13:44:22 · 433 阅读 · 0 评论 -
面试智力题:天平称球
题目:现有12个球,其中有一个球和其他的球重量不一样,但是外形还是一样的,现在要求你用一个天平在只称3次的情况下找出不一样的这个球来?如果换成13个球那又怎么样呢?题目自己很早以前就看过,但是答案当时没怎么想出来,看过网上答案。刚才一个同学在群上讨论,发现自己还是通过网上找答案,没有想出来。从网上找到正解,供自己学习。12球:将球分为a b c d; e f g h; i j k l转载 2011-11-23 13:43:42 · 476 阅读 · 0 评论 -
15个Google面试题以及答案~~~~你会几个?
1、 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一旦能证明自己的男人偷情,就必须当天把他杀死。村里的女人全都严格照此规矩办事。一天,女头领出来宣布,村里至少有一个丈夫偷情。请问接下来会发生什么事?答案:这是一个典型的递归问题。一旦所有的妻子都知道至转载 2011-11-23 13:42:23 · 364 阅读 · 0 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护的内存地址,不可访问) 程序代码区(只读,存代码和一转载 2011-11-23 13:41:45 · 311 阅读 · 0 评论 -
阿里云2011.9.17招聘会笔试题
1、 堆和栈的区别?答:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、栈是向下增长的,堆是向上增长的。(可以参考转载 2011-11-23 13:41:11 · 329 阅读 · 0 评论 -
char str[] 和 char *str 的区别
char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。 此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被转载 2011-11-23 13:48:46 · 291 阅读 · 0 评论 -
不用比较运算符及循环控制语句,判断int型的a、b两数的大小
看到这个题目的时候,我当时想到的,就是首先进行a-b,然后判断最高的符号位是1还是0。。我想大家也都会想到这一点:view plainint max(int a, int b) { int max[2] = { a, b }; return max[((a - b)&0x80000000) >> 31 ]; //与运算,将最高位的后面31位全部置为转载 2011-11-23 13:49:25 · 366 阅读 · 0 评论 -
getchar、scanf以及缓冲区的概念
1、getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。 getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符,getchar带有回显。 与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前转载 2011-11-23 13:50:06 · 510 阅读 · 0 评论 -
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。 最快速的方法: (number & number - 1) ==转载 2011-11-23 13:58:46 · 834 阅读 · 0 评论 -
六种方式实现斐波那契数列
一:递归实现 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。三:vector实现 时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源。四:queue实现 当然转载 2011-11-23 13:56:13 · 825 阅读 · 0 评论 -
程序员面试100题之三:不用+、-、×、÷数字运算符做加法
题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。 分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。 看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十转载 2011-11-23 13:55:04 · 424 阅读 · 0 评论 -
程序员面试100题之四:求1+2+...+n
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。 通常求1+2+…+n 除了用公式n(n+1)/2之外,无外乎循环转载 2011-11-23 13:54:28 · 444 阅读 · 0 评论 -
程序员面试100题之七:最长公共子字符串
子字符串的定义和子串的定义类似,但要求是连续分布在其他字符串中。比如输入两个字符串BDCABA和ABCBDAB的最长公共字符串有BD和AB,它们的长度都是2。 最长公共子字符串共有两种解决方法,下面具体说说我的思路方法一: Longest Common Substring和Longest Common Subsequence是有区别的 X =转载 2011-11-23 13:53:26 · 466 阅读 · 0 评论 -
程序员面试100题之八:不要被阶乘吓倒
阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题:1、 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。2.、求N!的二进制表示中最低位1的位置。 有些人碰到这样的题目会想:是不是要完整计算出N!的值?如果溢出怎么办?事实上,如果我们从"哪些数相乘能得到转载 2011-11-23 13:52:24 · 386 阅读 · 0 评论 -
程序员面试100题之十一:数组循环移位
设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。 不合题意的解法如下: 我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234--->4abcd123--->34abcd12--->234abcd1--->1234abcd。代码如下所示:view plainRightS转载 2011-11-23 13:51:36 · 746 阅读 · 0 评论 -
程序员面试100题之十二:求数组中最长递增子序列
写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度。 例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列为1,2,4,6。 分析与解法 根据题目要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],... b[m](0 解法一 根据无后效性的定义我们知道,将各阶段转载 2011-11-23 13:51:01 · 364 阅读 · 0 评论 -
操作系统各大公司笔试题汇总
1、在段页式存储管理中,其虚拟地址空间是()A、一维 B、二维 C、三维 D、层次答案:B2、采用( )不会产生内部碎片(“内零头”)A、分页式存储管理转载 2011-11-23 09:56:07 · 391 阅读 · 0 评论 -
网新恒天2011.9.21招聘会笔试题
1、下列哪种数据类型不能用作switch的表达式变量(C)A、byte B、char C、long D、enum2、在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度为( B )。A、 O(n) B、O(n+e) C、 O(n2) D、O(n3)3、在图采用邻接矩阵存储时,求最小生成树的转载 2011-11-22 16:28:59 · 1086 阅读 · 0 评论 -
淘宝2011.9.23校园招聘会面试题
1、操作系统中的同步和异步有什么区别?分别应用在什么场合?答:同步,就是说你的程序在执行某一个操作时一直等待直到操作完成。 最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。异步,就是说程序在执行某一个操作时,只是发出开始的指令;由另外的并行程转载 2011-11-22 16:27:09 · 373 阅读 · 0 评论 -
亚信联创2011.9.17招聘会笔试题
1、对于如下程序:view plain#include using namespace std; class A { public: A() { cout"A" } }; int main(void) { A a[4], b,*p; } 会输出多少个A?( C )A、2转载 2011-11-22 16:28:26 · 637 阅读 · 0 评论 -
淘宝2011.9.21校园招聘会笔试题
一、单选题1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分(C)A、5瓶 B、6瓶 C、31瓶转载 2011-11-22 16:27:40 · 296 阅读 · 0 评论 -
腾讯2011.10.15校园招聘会笔试题
1、下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是(B)A、插入排序 B、堆排序 C、冒泡排序 D、快速排序2、以下关于Cache的叙述中,正确的是(B)A、CPU中的Cache容量应大于CPU之外的Cache容量B、Cache的设计思想是在合理成本转载 2011-11-22 16:24:33 · 342 阅读 · 0 评论 -
浅谈函数指针
函数指针的概念,在潭浩强先生的C语言程序设计这本经典的教程中提及过,在大多数情况下我们使用不到,也忽略了它的存在。函数名实际上也是一种指针,指向函数的入口地址,但它又不同于普通的如int*、double*指针,看下面的例子来理解函数指针的概念:view plainint function( int x, int y ); int main ( void ) {转载 2011-11-22 16:20:46 · 267 阅读 · 0 评论 -
最新笔试题
1、8*8的棋盘上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角,请设计一个算法使其能够获得最大价值的礼物。view plain//经典的动态规划 //dp[i][j] 表示到棋盘位置(i,j)上可以得到的最大礼物值 //dp[i][转载 2011-11-22 16:19:02 · 335 阅读 · 0 评论 -
盛大游戏2011.10.22校园招聘会笔试题
1、下列代码的输出为:view plain#include "iostream" #include "vector" using namespace std; int main(void) { vectorint>array; array.push_back(100); array.push_back(300); arra转载 2011-11-22 16:16:20 · 694 阅读 · 0 评论 -
复杂链表的复制
题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct ComplexNode{ int m_nValue; ComplexNode* m_pNext; ComplexNode* m_pSibling;};下图是一个含有4个结点的该类转载 2011-11-22 16:15:04 · 354 阅读 · 0 评论 -
C++函数中那些不可以被声明为虚函数的函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2、为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以不支持。因转载 2011-11-22 16:25:14 · 309 阅读 · 0 评论 -
STL容器学习总结
本文主要讨论C++标准库中的顺序容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,顺序容器适配器类型:stack、queue、priority_queue。 标准库中的容器分为顺序容器和关联容器。顺序容器(sequential container)内的元素按其位置存储和访问,顾名思义,这些内部元素是顺序存放的;顺序容器内的元素排列次序与元素值无转载 2011-11-22 16:29:50 · 386 阅读 · 0 评论 -
搜狗笔试题
1、下面代码中for循环共执行了多少次?view plainunsigned short i,j; for(i=0, j=2; i!=j; i+=5, j+=7) {} unsigned short占用2个字节,当数据范围到头了(2^16-1),就又从0开始计数了,这个其实就是两辆汽车行驶在一个圆圈里的汽车追及问题。一个速度为5,一个速度为7,转载 2011-11-22 16:15:46 · 499 阅读 · 0 评论 -
迅雷笔试题
1、下面的程序可以从1....n中随机输出m个不重复的数。请填空knuth(int n, int m){ srand((unsigned int)time(0)); for (int i=0; i { if ( ) {转载 2011-11-22 16:17:06 · 517 阅读 · 0 评论 -
浙江大华2011.10.10校园招聘会笔试题
请写出下面程序的输出结果:(答案在下面)1、view plainint count = 3; int main(void) { int i, sum, count = 2; for(i=0,sum=0; i { static int count = 4; count++; if(i%2转载 2011-11-22 16:26:39 · 1416 阅读 · 0 评论 -
浙江绿盟科技2011.10.14校园招聘会笔试题
1、以下哪些协议不是应用层通信协议?A、HTTP、TELNET B、FTP、SMTP C、SNMP、NBNS D、ICMP、ARP2、Ping命令是使用以下哪个协议实现的()A、UDP B、ARP C、IGMP D、ICMP转载 2011-11-22 16:25:53 · 2335 阅读 · 0 评论 -
百度2011.10.16校园招聘会笔试题
一、算法设计1、设rand(s,t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。思路:这个使用数学中的极坐标来解决,先调用[s1,t1]随机产生一个数r,归一化后乘以半径,得到R*(r-s1)/(t1-s1),然后在调用[s2,t2]随机产生一个数a,归一化后得到角度:360*(a-s2)/(t2-s2)2、为分析用户行为,系统常需存转载 2011-11-22 16:22:15 · 295 阅读 · 0 评论 -
阿里巴巴笔试题
1、有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页?A、7 B、8 C、9 D、102、设有一个顺转载 2011-11-22 16:06:27 · 394 阅读 · 0 评论 -
淘宝网 校园招聘 技术人员笔试题
通用试题部分:选择题1、在按层次遍历二叉树的算法中, 需要借助的辅组数据结构是A、队列B、栈C、线性表D、有序表2、所谓指令周期是指A、取指令和取操作数的时间B、执行指令和存储操作结果的时间C、取操作数和执行指令的时间D、取指令和执行指令的时间3、 调用一成员函数时, 使用动态联编的情况是A、通过对象调用一虚函数B、通过指针或引用调用一虚函数转载 2011-11-22 16:30:28 · 555 阅读 · 0 评论 -
网易游戏2011.10.15校园招聘会笔试题
1、对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少。页面大小是8KB,那么页内偏移量是从0x0000(0)~ 0x1FFF(2的13次方 - 1)。0x5F123的页号是0x2E (48)页,页内偏移量是0x1104。2、如果X大于0并小于65536,用移位法计算X乘以255的值为: (XX3、一个包含n个节点的四叉树,转载 2011-11-22 16:24:01 · 357 阅读 · 0 评论