笔试面试
muweiyou
这个作者很懒,什么都没留下…
展开
-
百度最新面试题集锦
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。 操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。转载 2012-05-07 17:17:00 · 774 阅读 · 0 评论 -
顺时针打印矩阵
1.题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。http://zhedahht.bl原创 2012-09-09 10:18:26 · 834 阅读 · 0 评论 -
微软面试100题(含全部答案)
引言 无私分享造就开源的辉煌。 今是二零一一年十月十三日,明日14日即是本人刚好开博一周年。在一周年之际,特此分享出微软面试全部100题答案的完整版,以作为对本博客所有读者的回馈。 一年之前的10月14日,一个名叫July 的人在一个叫csdn的论坛上开帖分享微软等公司数据结构+算法面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试题目,最终成就了转载 2012-09-11 21:56:56 · 7205 阅读 · 0 评论 -
三、四柱汉诺塔最小步数
三柱汉诺塔最小步数函数为:hntf3(n);四柱汉诺塔最小步数函数为:hntf4(n).int hntf3(int n){ if(n==1) return 1; return 2*hntf3(n-1)+1;}三柱汉诺塔最小步数的规律是:f(n)=2^n-1(n为盘子数)int hntf4(int n){ if(n==1) return 1; int min,u;原创 2012-09-10 22:55:42 · 8362 阅读 · 0 评论 -
最长不重复子串+质因数分解算法
#include#include/* 求最长不重复子串 *//************************************************************************/void lnorepstr(char* s){ char A[26原创 2012-10-13 20:58:09 · 901 阅读 · 0 评论 -
判断单链表是否存在环,判断两个链表是否相交问题详解
有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fas转载 2012-10-20 22:48:22 · 527 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
四种进程或线程同步互斥的控制方法 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一时刻只转载 2012-10-20 23:25:46 · 554 阅读 · 0 评论 -
腾讯2013年校园招聘笔试,其中的两道关于fork()的题目
今天在机缘巧合下参加了腾讯2013年校园招聘笔试,其中有一道有关fork()的题目比较经典,转载网上一篇文章,原文如下:前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?12345转载 2012-10-26 00:13:41 · 1143 阅读 · 1 评论 -
教你如何迅速秒杀掉:99%的海量数据处理面试题
教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。转载 2012-10-26 23:52:57 · 885 阅读 · 0 评论 -
腾讯2012.9.23校园招聘会笔试题
1 表的设计最合理 数据库里面 一般是 学生,学科,分数 分开放。 因此A合理2 数据库系统产生不一致的根本原因 数据库完整性是为了保证由授权用户对数据库所做的修改不会影响数据一致性的损失 觉得C合理3 15L和27升两个杯子可以精确装多少水 15和27 升水 可以装出 3升水 27 + 3 +原创 2012-10-26 00:27:07 · 2606 阅读 · 2 评论 -
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。不妨假设10G个整数是64bit的。2G内存可以存放256M个64bit整数。我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。如果中数所在范围转载 2012-05-09 14:02:30 · 1043 阅读 · 0 评论 -
美丽的Hash
提到Hash,大家都会想到它的“快速存取”,在O(1)时间复杂度里就可以查找到目标元素,或者判断其是否存在,基于Hash我们有HashTable,HashMap等多种数据结构。Hash数据结构里的数据对外是杂乱无序的,我们无法得知其具体存储位置,也不知道各个存储元素位置之间的相互关系,但是我们却可以在常数时间里判断元素位置及存在与否,这不能不说是一个神奇,而这个神奇的创建在数学上却是那么的简单,不转载 2012-05-09 14:36:46 · 576 阅读 · 0 评论 -
找到两个单向链表的第一个公共节点
如果两个单向链表有公共节点,则两个链表会构成Y型结构,最后一个节点相同。我们可以从头开始遍历两个链表,找到最后一个节点的指针,设为p_a,p_b。同时记录下两个链表的长度len_a,len_b(假设len_a >= len_b)。如果p_a == p_b,则说明两个链表有公共节点,否则没有。如果有公共节点,则第一个公共节点距起始节点的距离满足 len_a - start_a ==转载 2012-05-09 13:58:30 · 505 阅读 · 0 评论 -
Top K算法
此算法是不是可解百度搜索中的suggestion问题?问题描述:(百度面试题)搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为0-255字节。假设目前有1000万个记录,除去重复后,不超过300万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门,请你统计最热门的10个查询串,要求内存不能超过1G。问题解析:【分析】:要统计最热门查询,首先转载 2012-05-07 17:15:02 · 638 阅读 · 0 评论 -
2012年5月6日 百度实习研发工程师笔试题(通用)
1. 单词a中任意字母交换位置变为单词b,我们就称单词a,b为兄弟单词,如 army 与 mary为兄弟单词。现给一个单词字典,用户输入一个单词,找出字典中所有的兄弟单词,请写出你的解题思路和算法。 答案: (思路一)计算ASCII码,如果值与输入词的ASCII码相等,再判断; (思路二)是对输入的单词进行全排列,对每一种排列在字典里查询,统计查到的兄弟单词个数。(但是这个思转载 2012-05-07 16:23:55 · 880 阅读 · 0 评论 -
从300万字符串中找到最热门的10条(百度面试题)
搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前10条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G。请描述思想,写出算法(c语言),空间和时间复杂度。答案: 此题是可以全部存放入内存中的情况。256B=0.25KB=1KB/4;100万=1M,10亿=1G。300万个字符串最多(假设没有重复,都是最大长度)占用内存3M*1K/4=0.转载 2012-05-09 11:11:02 · 2868 阅读 · 0 评论 -
在100w个数中找最大的前100个数
应该使用某种数据结构保存迄今最大的100个数。每读到一个新数时,将新数和保存的100个数中的最小一个相比较,如果新数更大些,则替换。这样扫描一遍100w个数也就获得了最大的100个数。对于保存的100个数的数据结构,应该在最小复杂度的条件下满足1)可以获得最小的数;2)将最小数替换为另一个数后可以重新调整,使其可以满足条件1。可见小根堆可以满足这些条件。所以应该采用小根堆+扫描转载 2012-05-09 14:01:51 · 1330 阅读 · 0 评论 -
求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。一天总共有 3600*24 = 86400秒。定义一个长度为86400的整数数组int delta[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负。开始时将数组元素都初始化为0。然转载 2012-05-09 14:10:53 · 890 阅读 · 0 评论 -
一个文件中有40亿个整数,每个整数为四个字节,内存为1GB,写出一个算法:求出这个文件里的整数里不包含的一个整数。
4个字节表示的整数,总共只有2^32约等于4G个可能。 为了简单起见,可以假设都是无符号整数。 分配500MB内存,每一bit代表一个整数,刚好可以表示完4个字节的整数,初始值为0。基本思想每读入一个数,就把它对应的bit位置为1,处理完40G个数后,对500M的内存遍历,找出一个bit为0的位,输出对应的整数就是未出现的。算法流程: 1)分配500MB内存buf,初始化为0转载 2012-05-09 14:46:05 · 3885 阅读 · 0 评论 -
从两个文件(各含50亿个url)中找出共同的url
给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?答案: 可以估计每个文件的大小为5G*64=300G,远大于4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a99转载 2012-05-09 11:15:06 · 842 阅读 · 0 评论 -
找出1到10w中没有出现的两个数字
有1到10w这10w个数,去除2个并打乱次序,如何找出那两个数?方法1:申请10w个bit的空间,每个bit代表一个数字是否出现过。开始时将这10w个bit都初始化为0,表示所有数字都没有出现过。然后依次读入已经打乱循序的数字,并将对应的bit设为1。当处理完所有数字后,根据为0的bit得出没有出现的数字。方法2:首先计算1到10w的和,平方和。然后计算转载 2012-05-09 13:43:54 · 475 阅读 · 0 评论 -
如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。其中内存只有1G。
如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。其中内存只有1G。显然内存不能同时存下所有的数据,所以考虑分而治之的思想。假设1K Byte可以保存一个用户的基本信息和看电影记录。1亿=0.1G,所以0.1G*1KB=100GB。内存为1G,分为100个小文件。我们可以将基本信息和看电影记录都按照hash(user_na转载 2012-05-09 14:15:10 · 3291 阅读 · 0 评论 -
海量日志数据,提取出某日访问百度次数最多的那个IP。
IP地址最多有2^32=4G种取值可能,所以不能完全加载到内存中。 可以考虑分而治之的策略,按照IP地址的hash(IP)%1024值,将海量日志存储到1024个小文件中。每个小文件最多包含4M个IP地址。 对于每个小文件,可以构建一个IP作为key,出现次数作为value的hash_map,并记录当前出现次数最多的1个IP地址。 有了1024个小文件中的出现次数最多的IP,我们就可以转载 2012-05-09 13:39:09 · 452 阅读 · 0 评论 -
2019年最新版--Java 最常见的 200+ 面试题汇总
适合人群:1.想要面试的初/中/高级 Java 程序员2.想要查漏补缺的人3.想要不断完善和扩充自己 Java技术栈的人4.原本就掌握了技术却不知道怎么表达的人5.有上进心,也愿意学习的人6.Java面试官说了这么多,直奔主题,这套面试必备的《Java 最常见 200+ 面试题全解析》到底优质在哪?这份面试题总内容包含了十九个模块:Java 基础、容器、多线程、反射、对象拷贝、...转载 2019-08-10 16:51:04 · 811 阅读 · 0 评论