![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 52
dazhi_100
这个作者很懒,什么都没留下…
展开
-
动态规划问题
Dynamic Programming From novice to advanced 【原文见: http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg】 作者: By Dumitru转载 2012-09-03 19:49:54 · 736 阅读 · 0 评论 -
说谎国与诚实国
两个人,一个一直说谎,一个一直说真话,他们来自说谎国和诚实国,想要只问一个人一个问题,来确定去说谎国的路?应该这样问,随便问一个人:“请问如果我问另一个人去说谎国怎么走,他会告诉我走哪条路呢?”说谎的人回答的是去诚实国的路诚实的人回答的是去诚实国的路故只要是向反方向走就行了转载 2012-09-22 20:52:51 · 3166 阅读 · 0 评论 -
警长逃犯的黑白帽的问题
问题:有一位警长,抓了三个逃犯。现警长决定给他们一次机会。他拿出3顶黑帽子,两顶白帽子,然后往这三个逃犯头上每人戴了一顶帽子,每个逃犯只能看到另外两个逃犯帽子的颜色,不能看到自己帽子的颜色,而且不能进行通讯,不能进行讨论,只能靠自己的推理推出来,如果猜出来了,放一条生路,否则处死。警长先问第一逃犯,结果第一逃犯猜错了,被杀掉了。警长问第二个逃犯,结果还是猜错了,同样被杀掉了。警长再转载 2012-09-22 22:32:30 · 2593 阅读 · 0 评论 -
编程断言概述
编程断言概述 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 使用断言可以创建更稳定、品质更好且易于除错的代码。当需要在一个值为FALSE时转载 2012-09-21 21:02:48 · 688 阅读 · 0 评论 -
智力题
2009-09-25 20:58 面试智力题1、题目:有五个海盗,抢劫了一批黄金,共200两,五个海盗商议如何分配这笔不义之财。于是决定,按顺序,五个海盗轮流提出一个分配方案,所提出的分配方案要得到半数以上的海盗通过。比如说第一个海盗提出的分配方案没有得到半数以上的海盗通过,那么就将这个海盗抛下海(海盗就是够狠),然后由第二个海盗继续提方案,如果也没有得到半数以上的海盗通过,抛转载 2012-09-17 23:27:21 · 1039 阅读 · 0 评论 -
哈佛结构与冯诺依曼结构的异同
内容特点 冯.诺依曼结构处理器具有以下几个特点: 1:必须有一个存储器;2:必须有一个控制器;3:必须有一个运算器,用于完成算术运算和逻辑运算;4:必须有输入设备和输出设备,用于进行人机通信。:另外,程序和数据统一存储并在程序控制下自动工作功能 根据冯·诺依曼体系结构构成的计算机,必须具有如下功能: 把需要的程序和数据送至计算机中。 必须具转载 2012-09-17 12:51:12 · 5173 阅读 · 0 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后转载 2012-09-13 09:30:45 · 588 阅读 · 0 评论 -
微软、google、雅虎、百度等各大著名公司的经典面试题!保证搞晕你!!
微软十五道面试题1、有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。2、写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)3、给出一个函数来输出一个字符串的所有排列。4、请编写实现malloc()内存分配函数功能一样的代码。 给出一个函数来复制两个字符串A和B。转载 2012-09-10 23:21:54 · 1540 阅读 · 0 评论 -
五个二分搜索
/*1.找下标i使得X[i] = V 返回 i或者-1*/int BinarySearch(const int* X,int N,int V){ if(X==NULL) return -1; int L=0,U=N-1,M; while(L { M = L+((U-L)>>1); if(X[M] =转载 2012-09-09 23:01:03 · 444 阅读 · 0 评论 -
数据库范式
一、基础概念 要理解范式,首先必须对知道什么是关系数据库,如果你不知道,我可以简单的不能再简单的说一下:关系数据库就是用二维表来保存数据。表和表之间可以……(省略10W字)。然后你应该理解以下概念:实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,转载 2012-09-05 22:21:23 · 848 阅读 · 0 评论 -
只有三只酒杯,如何将酒平均分给4个人喝?
只有三只酒杯,如何将酒平均分给4个人喝?问题:有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝?解答:16 / 4 = 4,即每个人要喝4两酒。我们很容易用3两的杯子得到3两酒,难度在于怎么得到1两酒。我们怎么可以得到1两呢? 1 = 3*3 - 8因此我们用3两的杯子量3次倒入8两的杯转载 2012-09-22 22:19:49 · 2835 阅读 · 0 评论 -
代码段与程序段的区别
一个程序本质上都是由 bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但 在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的 问题。在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment转载 2012-09-21 23:23:18 · 3707 阅读 · 0 评论 -
左旋转字符串
题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。 要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。分析:如果不考虑时间和空间复杂度的限制,最简单的方法莫过于把这道题看成是把字符串分成前后两部分,通过旋转操作把这两个部分交换位置。转载 2012-09-05 23:08:26 · 707 阅读 · 0 评论 -
两个单向链表的第一个公共节点
问题:两个单向链表,可能存在公共节点。如何判断是否存在公共节点,并找出它们的第一个公共结点。思想:1. 如果两个链表相交,则从相交点开始,后面的节点都相同,即最后一个节点肯定相同;2. 从头到尾遍历两个链表,并记录链表长度,当二者的尾节点不同,则二者肯定不相交;3. 尾节点相同,如果A长为LA,B为LB,如果LA>LB,则A前LA-LB个先跳过, 然后二者一起向后遍转载 2012-09-09 23:12:58 · 583 阅读 · 0 评论 -
C/C++/C#面试题精选(3)
题目(11):运行下图中的C#代码,输出是什么?namespace StringValueOrReference{ class Program { internal staticvoid ValueOrReference(Type type) { String result = "The type " + type转载 2012-08-20 21:22:16 · 592 阅读 · 0 评论 -
C/C++/C#面试题精选(2)
题目(六):运行下列C++代码,输出什么?struct Point3D{ int x; int y; int z;};int _tmain(int argc, _TCHAR* argv[]){ Point3D* pPoint = NULL; int offset = (int)(&(pPoint)->z)转载 2012-08-20 21:23:25 · 516 阅读 · 0 评论 -
C/C++/C#面试题精选4
问题(16):运行如下的C++代码,输出是什么?class A{public: virtualvoid Fun(int number = 10) { std::cout "A::Fun with number " }};class B:public A{public: virtualvoid Fun(int numb转载 2012-08-20 21:24:25 · 606 阅读 · 0 评论 -
链表的循环链接
问题1:判断链表是否循环?解析:设置1个快指针(每次向前走2个节点),一个慢指针(每次向前走1个节点),如果存在环,则快指针肯定能赶上慢指针;简单代码:bool isLoopList(const ListNode* root){ if(root == NULL) return false; const ListNode *pFast = root,*pS转载 2012-09-04 22:10:06 · 582 阅读 · 0 评论 -
数据结构及算法学习总结(一)
1.vector 封装数组、list封装链表、map和set封装二叉树C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般的平衡二叉树(有些书籍根据作者姓名,Adelson-Velskii和Landis,将其称为AVL-树),所以被STL选转载 2012-09-09 22:34:36 · 2370 阅读 · 0 评论 -
有序数组中找出给定数字的出现次数
问题:在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。解答:使用二分查找的方法分别找出给定数字的开始位置minIndex和结束位置maxIndex,最坏情况下时间复杂度为O(logn)。简单代码如下:/*二分搜索2.找 |最大| 下标i使得X[i] = V 返回 i 或者-1*/int BinarySe转载 2012-09-09 23:03:28 · 1481 阅读 · 0 评论 -
c++面试1
题目(一):C++中我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?分析:答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个转载 2012-08-20 21:19:23 · 389 阅读 · 0 评论 -
谁能先说出总和为100的数
问题:甲乙两人,玩一个游戏。每人轮流说出1-10的一个数字,从甲开始。轮到某个人,使得所有说出的数字的总和等于100,就算谁赢。请问甲或乙谁有必胜的把握,为什么?解答:1. 假设甲要赢的话,他在说100的前一个数是89(这样乙再说任何一个数字,甲都能赢,即甲必胜.)2. 现在问题转化为:轮到某个人,使得所有说出的数字的总和等于89,就算谁赢. 和1同样的道理,在说89的前一个和转载 2012-09-09 23:19:00 · 1003 阅读 · 0 评论 -
找出1到10w中没有出现的两个数字
问题:有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?解答:方法1:设这些数保存在数组A中,用一个10w的数组B标志某一个数是否出现,i出现则B[i]=1,没出现则B[i]=0;扫描数组B,查找缺失的两个数。时间复杂度:O(N)空间复杂度:O(N)方法2:因为每个数只要两种状态,出现或者不出现,因此可以缩减方法1的空间复杂度,用BitMap代转载 2012-09-09 23:07:51 · 1649 阅读 · 0 评论 -
1000瓶水,哪一瓶有毒?
问题:有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。 解答:方法1:用1000只小白鼠,每只喝一瓶;这很简单,但肯定不是最有效的。方法2:假设1000个瓶分别标上如下标签(10位长度): 0000000001 (第1瓶) 0000000010 (第2瓶) 000000001转载 2012-09-09 22:55:26 · 3733 阅读 · 0 评论 -
切金条付工资
你让工人为你工作7天,回报是一根金条,这个金条平分成相连的7段,你必须在每天结束的时候给他们一段金条。如果只允许你两次把金条弄断,你如何给你的工人付费?解析:问题的关键类似于:你给工人整钱,工人可以找你零钱;答案:将金条切成1 + 2 + 4第一天:给他 1;第二天:给他 2,他找回1;第三体:给他 1;第四天:给他 4 ,他找回1,2;第五天:给他 1转载 2012-09-04 21:32:06 · 2692 阅读 · 0 评论 -
如何从8只球中找出比较重的一个
你有8个一样大小的球,其中7个的重量是一样的,另一个比较重。怎样能够用天平仅称两次将那个重一些的球找出来。解析:为了方便,我们将球编号为:1,2,3,4,5,6,7,8,则我们的方案如下:step 1 :将1,2,3放在天平左侧,4,5,6放在天平右侧,进行一次称量,结果有两种:(1). 平衡,则重球在7,8中,称量一次7和8即可获得结果;(2). 不平衡,假设1,2,3重转载 2012-09-04 21:09:18 · 2121 阅读 · 0 评论 -
只用+操作实现 -,*,/操作
减法:a-b = a + (-b)乘法:a*b相当于将a累加abs(b)次除法:相当于将abs(a)减去-abs(b)的次数//求lhs的反面值rhs,即求rhs使得lhs + rhs = 0int Negate(int lhs){int step = (lhs>0)?-1:1, ret = 0;while(lhs != 0) { l转载 2012-09-03 21:02:40 · 623 阅读 · 0 评论 -
诚实国和说谎国
问题:一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?解析:因为二者对一个二值问题(只有两个答案)的回答肯定是相反的,如果我们问相反的问题(比如1>2吗 和 1答案1:问诚实国人:要去说谎国往哪边走?问说谎国人:要去诚实国往哪边转载 2012-09-04 21:16:41 · 4135 阅读 · 2 评论 -
如何用3升和5升桶量取4升水?
如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?解析1:4 = 5 - 1;为了得到4,我们需要从5升水里面去掉1升;1 = 3 - 2;为了衡量1升,我们可以往容量为3的装了2升的水桶中倒水;2 = 5 - 3;为了得到2升,我们可以将5升水倒去3升;所以答案1:step 1 :将5公升的提捅装满,然后转载 2012-09-04 21:14:05 · 10136 阅读 · 0 评论 -
开关和灯泡问题
在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分哪个开关控制哪一盏灯?解析:首先想到的就是通过打开不同的开关,进去后看灯是否亮来找出对应关系。可能打开的开关数量只有0,1,2,3共四种情况,没有一种情况能解决这个问题。所以必须找到其它的信号。鉴于灯泡亮一段时间后会发热,我们可以使用灯的热度作为一个信号。这样我们就有了1 - 热且亮2转载 2012-09-04 21:05:59 · 1496 阅读 · 0 评论 -
50条狗中有多少条病狗?
问题:村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何转载 2012-09-03 21:36:14 · 4074 阅读 · 0 评论 -
马戏团人塔高度
问题:马戏团表演跌人塔,要求上上面的人比下面的人矮且轻,给定所有人的身高体重,求塔的最大高度示例:输入(身高, 体重): (65, 100) (70, 150) (56, 90) (75, 190) (60, 95) (68, 110)输出: 最大高度:6 对于人塔为(从顶部到底部):(56, 90) (60,95) (65,100) (68,110) (70,150) (75转载 2012-09-03 20:58:59 · 1047 阅读 · 0 评论 -
面试解惑2
问:每次面试的时候,面试官都会问我有没有什么问题要问他。我可以问什么问题呢?答:面试官让应聘者问问题,主要是想了解应聘者最关心的问题有哪些。因此,首先至少要问一两个问题。不然面试官就会觉得你对我们公司、职位等都不感兴趣,那你来面试做什么?但是也不是什么问题都可以在这个时候问。如果问题问得比较合适,对应聘者来说是个加分的好机会;但如果问的问题不太合适,面试官对你的印象就会大打折扣,相当于跳入面试转载 2012-08-20 21:35:02 · 984 阅读 · 0 评论 -
用最少的测试找到恰巧使杯子破碎的楼层
问题:一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破;若在第M层不破,则在任何比M低的楼层均不会破,给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层。解析:题目要求用最少的测试次数找出恰巧会使杯子破碎的楼层,意思是说在各个不同的给出的可行方案中最坏的情况下的最小值;比如:方案1:我们从1楼开始往100楼一层一层的丢,则最好转载 2012-09-04 21:41:12 · 3134 阅读 · 0 评论 -
烧绳计时问题
问题:烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时1小时15分钟呢?解析:1小时15分钟 = 1小时 + 15分钟;当一只绳子燃烧完后,点燃另外一根绳子,可以对时间进行加法。通过1个小时的绳子,我们可以准确的得到30分钟,方法是:对一根完整的绳子两端同时开始烧,烧完的时候就是30分钟;同理,根据30分钟的绳子,我转载 2012-09-04 21:48:00 · 1947 阅读 · 0 评论 -
找出看了5个电影以上的用户
问题:在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?解答:分以下几个步骤完成:1. 建立 hash_map 2. 顺序扫描1亿条用户记录: (1). 如果 用户 在hash_map中不存在,则新增并设 电影数=1; (2). 如果对应的用户名存在,则将其 电影数+1,如果+1之后 电影数>5,则输出该用户,否则(+1之前已经>5的不输出)转载 2012-09-09 22:50:30 · 1492 阅读 · 0 评论 -
软件工程的几个步骤
1问题定义问题定义阶段必须回答的关键问题:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出 的结果很可能是毫无意义的。尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。通过问题定义 阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统的实际用户和使用部门转载 2012-09-09 22:32:11 · 805 阅读 · 0 评论 -
部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
#include #include #include //////////////////////////////////////////////////////Convert character to uppercase.const char *toupper(char *s){for(char *t=s;*t!='/0';t++){ if(*t>='a'&转载 2012-09-09 20:06:43 · 587 阅读 · 0 评论 -
进程间同步总结(linux windows)
windows进程间同步方式有:1. 互斥量 mutex2. 信号量 semaphore3.事件 event4.临界区 Critical Section5.互锁函数临界区和互锁函数没有相应的内核对象因而不能跨进程linux进程同步方式有:1. 互斥量2. 读写锁3. 条件变量linux内核同步方法:原子操作、自旋锁、读-写自旋锁、信号量、读-写信转载 2012-09-05 23:10:18 · 646 阅读 · 0 评论 -
死锁的四个条件
1. 互斥访问(不同的进程不可以同时访问同一个资源)2. 请求并保持(进程在请求某一资源的时候,即使没有请求到,也不会释放现有资源(保持))3. 非剥夺访问(优先级高的进程也不能剥夺优先级低的进程获取的资源)4. 环路等待(进程P1请求资源S1,S1被进程P2拥有,P2请求资源S2,S2被进程P1拥有)转载 2012-09-05 23:13:26 · 488 阅读 · 0 评论