
Interviews
iteye_16074
这个作者很懒,什么都没留下…
展开
-
百度面试题——简单运算
问题:要求不使用+ - * / < >运算符号判定给定两个非零数的大小。输入:多组输入两个数a和b。输出:输出min=较小的数字,max=较大的数字实现代码:[code="C"]#include int main(int argc,char* argv[]){ int a,b; for(;~scanf("%d%d",&a,&b);){ ...原创 2012-03-17 15:52:56 · 191 阅读 · 0 评论 -
陈博的完美主义
[b][color=red]问题:[/color][/b]在JOBDU团队里,陈博是最讲平均主义的人,对数字十分敏感。事实上,他还是个数字完美主义者。例如看到N个数字的时候,从1到N的每个数都需要在其中出现且仅出现一次,否则他就觉得这个数字序列不完美。后来,我明白了:这是排列!对于一个整数序列d1, d2, d3 ... dn,你是否能够算出至少改变其中的几个数,才能把他们变成从1到N的一个排...原创 2012-03-08 10:31:43 · 157 阅读 · 0 评论 -
疯狂的JobDu序列
[b][color=red]问题[/color]:[/b]阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 ……即大小为k的数字,正好会在序列中连续重复k...原创 2012-03-07 15:10:46 · 230 阅读 · 0 评论 -
Day of Week
问题:We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.For example, years 2004, 2180 and 2400 are ...原创 2012-03-02 17:30:42 · 252 阅读 · 1 评论 -
寻找最长的合法括号序列
问题:假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。输入:测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过10的6次方。输出:对于每个测试案例,输出一个整数,表示最后剩下的最长合...原创 2012-02-27 11:50:00 · 476 阅读 · 0 评论 -
Output the k-th Prime Number
问题:输出第k个素数(1原创 2012-02-17 18:23:41 · 527 阅读 · 0 评论 -
最大子序列和
[color=green]问题:[/color]给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。对于S的所有非空连续子序列T,求最大的序列和。变量条件:N为正整数,N≤1000000,结果序列和在范围(-2^63,2^63-1)以内。输入:第一行为一个正整数N,第二行为N个整数,表示序列中的数。输出:输入可能包括多...原创 2012-02-15 14:06:49 · 207 阅读 · 0 评论 -
年龄最小的3个职工
问题:职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。输入:----------------------------------------------------------------输入第一行包括1个整数N,1...原创 2012-02-13 16:09:07 · 202 阅读 · 0 评论 -
互联网公司面试题之十二
问题:五连击数组[BAIDU]:在任意一个数组当中,若你能找出有五个以及五个以上的连续元素时,我们就称它为五连击数组。但是这种数组并不是视场会有,你的任务就是通过增加最少的元素,使一个数组成为一个五连击数组。输入要求:每个测试文件包括多个测试案例,每个测试案例包括两行。第一行代表输入的元素个数N,其中0a[i]; sort(a,a+n,compare); for(m=5,i=0...原创 2012-01-24 13:33:23 · 138 阅读 · 0 评论 -
互联网公司面试题之十一
问题:递推数列【BAIDU】:给定a0,a1,以及an=p*a(n-1)+q*a(n-2)中的p,q。这里n>=2。求第k数对10000的模。[color=darkred]要求性能尽可能优化。[/color]说明:所给出的程序的输入包括a0,a1,p,q,k,输出第k个数a(k)对10000的模。答:初看这个题目,第一印象就是无非考考递归程序设计或者线性递推罢了。其实仔细想了想题目...原创 2012-01-14 14:57:57 · 148 阅读 · 0 评论 -
互联网公司面试题之十
问题:Sun同学是考研大军之中的一员,他每天过着三点一线的生活。学校里面有一个公告栏,他每天都看到上面张贴着各种考研海报。Sun同学提出一个问题:公告栏上还有多少空白区域是没有被考研海报粘贴过的呢?请你帮他完成这样一个程序,计算没有张贴过海报的面积。注意:公告栏左上角是坐标原点(0,0),公告栏长宽相等。数据有多组,每组输入公告栏长度n(0...原创 2011-12-27 22:10:29 · 169 阅读 · 0 评论 -
互联网公司面试题之九
问题一:查找一个数组中的第K小的数,注意同样大小算一样大。如2 1 3 4 5 2,第三小数为3。[color=red]时间复杂度要求达到O(n)[/color]。答:实现代码如下(位图算法实现):[code="C"]s,m,j;main(i,n){ char a[65535]={0,}; for(;~scanf("%d",&n);printf("%d\...原创 2011-12-16 10:07:26 · 130 阅读 · 0 评论 -
互联网公司面试题之八
问题一:读入两个小于100的正整数A和B,计算A+B。[color=red]需要注意的是:A和B的每一位数字由对应的英文单词给出。[/color]例如:one + two =three four + five six =zero seven + eight nine =zero + zero =[color=red]当A和B同时为0时输入结束,相应的结果不要输出[/co...原创 2011-12-15 17:23:04 · 187 阅读 · 0 评论 -
互联网公司面试题之七
问题:[color=red]编写一个程序来确定一下你的机器是大端地址还是小端地址[/color]。答:实现代码如下:[code="C"]#include int main(){ int value = 0x1234; char value_front=*((char *)(&value)); char value_back=*((char ...原创 2011-12-15 14:47:50 · 116 阅读 · 0 评论 -
互联网公司面试题之六
问题:给定a和n,计算a+aa+aaa+a...a(n个a)的和,[color=red]请注意a和n的取值范围分别为[1,9]和[1,100][/color]。答:实现代码如下:[code="C"]i,k,j;main(a,n){ char s[100],t[100]; for(;~scanf("%d%d",&a,&n);){ for(i=1,t...原创 2011-12-14 11:40:50 · 123 阅读 · 0 评论 -
互联网公司面试题之五
问题:存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个。输入要求:第一行一个整数t表示有t个测试数据,第二行两个整数,表示两个数组的长度,接下来两行表示两个数字的值。最后一行有四个整数a,b,c,d。数组的长度不会超过1000。输出要求:每行...原创 2011-12-13 18:42:32 · 153 阅读 · 0 评论 -
互联网公司面试题之四
问题:假设给定一个嵌入式设备,它的内存有限,可以利用的内存只有1M(包括代码段和数据段空间)。你的任务是编写一个尽可能精简的程序以最高效的方式实现下面任务:读入一个整数N,若N为非负整数,则计算N到2N之间的整数和;若N为一个负数,则求2N到N之间的整数和。答:实现代码如下:[code="C++"]#include n,s,t,i;int main(){ ...原创 2011-12-11 15:20:06 · 126 阅读 · 0 评论 -
互联网公司面试题之三
问题:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问它们两个数反转的和是否等于两个数的和的反转,请编程实现。要求程序的效率尽可能高、代码尽量短以及内存使用量尽量小。Input->第一行是一个正整数表示测试的个数n;只有n行,每行两个数据a和b(0...原创 2011-12-08 21:39:15 · 146 阅读 · 0 评论 -
互联网公司面试题之二
问题:输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码大小从小到大进行排序,输出排序后的结果。要求时间复杂度尽量低。答:实现代码如下:[code="C++"]#include #include int main(){ int a[128]={0}; char b[20]; int i,l,k; char s[...原创 2011-12-05 20:11:02 · 129 阅读 · 0 评论 -
互联网公司面试题之一
问题:对给定的字符串(只包含'z','o','j'三种字符),判断它是否能AC。判断是否能够AC的规则如下:(1)zoj能AC;(2)若字符串形式为xzojx,则也能AC,其中x可以是N个'o'或者为空;(3)若azbjc能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空。答:实现代码如下:[code="C++"]#include #i...原创 2011-12-04 23:26:39 · 113 阅读 · 0 评论 -
Java面试问题之六十一
问题:请你编写一个方法来判断一个整数是否是一个守形数,如果是输出"YES",否则输出"NO"。要求尽可能地简单和快速。答:代码如下:[code="java"]import java.lang.Math;public class KeepFormatNumber { public static String doJudge(int n) { ...原创 2011-11-30 16:04:03 · 106 阅读 · 0 评论 -
Algorithm 06:删数问题
问题:键盘输入一个高精度的正整数N(N原创 2011-11-30 12:16:26 · 142 阅读 · 0 评论 -
Java面试问题之六十
问题:请列举一些常用的JDK监控和故障处理的工具,并说明这些工具的作用。答:在日常监控和故障排除工作中,我们常常使用以下几个小工具: (1)jps:即JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 (2)jstat:即JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行...原创 2011-11-22 14:52:16 · 142 阅读 · 0 评论 -
Java面试问题之五十九
问题:Java虚拟机中采用了哪些垃圾回收的算法?请简要说明。答:JVM中垃圾回收算法主要分为四种: (1)标记-清除算法(Mark-Sweep Algorithm):算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后同一回收掉所有被标记的对象。这个算法主要有两个缺点:第一个是效率问题,标记和清除过程的效率都不高;另外一个是空间问题,标记清除之后产生大...原创 2011-11-22 10:52:53 · 94 阅读 · 0 评论 -
Java面试问题之五十八
问题:Java虚拟机是如何判断哪些对象应该放在新生代,哪些对象应该放在老年代中,提供何种机制来实现?答:Java虚拟机一般采用分代的思想来内存的,为了确定一个对象年龄(Age),虚拟机给每个对象都引进了一个对象年龄计数器。如果对象在Eden出生并经过第一次Minor GC后仍然存活,并且能够被Survivor容纳的话,将被移动到Survivor空间中,并将对象的年龄设定为1。对象在Su...原创 2011-11-18 14:29:11 · 125 阅读 · 0 评论 -
Java面试问题之五十七
问题:在Java垃圾收集机制中的Minor GC和Full GC分别指什么,有和不同?答:Minor GC是指新生代GC,是发生在新生代的垃圾收集动作,因为Java对象大多都具有“朝生夕灭”的特性,所以Minor GC非常频繁,一般回收速度也比较快;Full GC(也称为Major GC)是指老年代的GC,Full GC的速度一般会比Minor GC慢10倍以上。相关知识扩展:...原创 2011-11-17 20:11:15 · 144 阅读 · 0 评论 -
Java面试问题之五十六
[百度面试问题之三]:请谈谈你对Java垃圾收集器中并行和并发概念的理解。答:并行和并发这两个概念都是编程中的概念,在垃圾收集器的上下文语境中,我们应该这样理 解: (1)并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 (2)并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能...原创 2011-11-17 12:11:01 · 140 阅读 · 0 评论 -
Java面试问题之五十五
[百度面试题问题之一]:请分析一下Java的垃圾回收机制中对方法区的回收过程,在何种条件下才会触发GC对方法区进行回收工作。答:所谓的方法区也就是HotSpot虚拟机中的永久代,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集机制,而且在方法区回收的“性价比”一般比较低;在堆中,尤其是在新生代中,常规应用进行一次垃圾收集可以回收70%~95%的空间,而永久代的垃圾收集效率远...原创 2011-11-16 15:30:40 · 133 阅读 · 0 评论 -
Java面试问题之五十四
问题:请问在Java中本地直接内存(Direct Memory)和堆内存(Java Heap)之间有何关系与区别,并尝试分析一下直接内存有什么作用。答:根据Java虚拟机规范,堆内存(Heap Memory)和直接内存(Direct Memory)是Java虚拟机中两种基本的内存空间类型。堆内存是一个标准内存池,用于存放绝大多数对象的实例;直接内存则是一块由程序本身管理的一块内存空间,...原创 2011-11-16 10:53:27 · 95 阅读 · 0 评论 -
Java面试问题之五十三
问题:请问Java的运行时数据区域是如何划分的,分为几个部分,每个部分主要有什么作用?答:Java的运行时数据区主要分为如下几个部分: (1)程序计数器(Program Counter Register):它是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳...原创 2011-11-12 22:15:12 · 120 阅读 · 0 评论 -
Java面试问题之五十二
问题:请分析一下Java中StackOverflowError异常和OutOfMemoryError异常之间联系与区别,什么时候会产生StackOverflowError异常?什么时候产生OutOfMemoryError异常?答:在Java虚拟机规范中是这样描述这两类异常的: (1)如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异...原创 2011-11-12 18:26:58 · 163 阅读 · 0 评论 -
Java面试问题之五十一
问题:请问Java语言实现闭包了吗?你是如何理解语言中闭包的概念的,请详细谈谈你的看法。答:Oracle公司在最新推出的JDK 7.0中提供了闭包与Lambda表达式的一个实现方式,虽然还有许多值得考虑的地方,但是从Java语言的发展趋势来看,支持闭包的概念无疑是Java语言的一个方向。所谓闭包是指可以包含自由(未绑定到特定对象)变量的代码块,这些变量不是在这个代码块内或者任何全局上下文中...原创 2011-11-11 15:24:13 · 125 阅读 · 0 评论 -
Java面试问题之五十
Question: Provide a function to accept an integer array and computes the maximum consecutive sum. If the maximum sum is negative, this function returns zero.问题:请一个整数数组的最大连续和,若和小于零则返回零。实现代码:...原创 2011-11-07 21:27:46 · 119 阅读 · 0 评论 -
Java面试问题之四十九
问题:请问当你写的程序出现OutOfMemoryError的时候,你该如何进行排查?使用什么Java命令参数和方法呢?答:可以尝试使用VM arguments来协助排查,主要分为以下几个步骤: (1)预估你的程序使用内存的大小,尽可能估计一个准确的范围且这个范围一定需要比运行你的程序所需的最低内存大1倍(经验值)。 (2)假定估计消耗内存的值为10M,那么应该使...原创 2011-11-04 11:21:58 · 127 阅读 · 0 评论 -
字符串移位包含问题
问题:给定两个字符串s1和s2,要求判断s2是否能够通过s1做循环移位操作得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。答:这个问题可以使用“提高空间复杂度来换取时间复杂度的降低”的思路来解决。实现代码:[code="java"]public class ShiftStringMa...原创 2011-11-03 22:10:05 · 121 阅读 · 0 评论 -
筛除数组中重复的元素
问题:编写一个程序实现筛除数组中重复元素功能。算法思路:基于简单的想法,先把数组排序,然后扫描整个数组跳过重复的元素。算法的效率取决于排序算法的效率。算法实现:[code="java"]//// main.cpp// MyProjectForCPP//// Created by labuser on 11/2/11.// Copyrigh...原创 2011-11-03 21:12:15 · 178 阅读 · 0 评论 -
给定一个整数数组,检测是否存在一个和为零的子数组
问题:给定一个整数数组,写一个算法实现判断是否存在一个和为零的子数组。答:算法思路:计算数组的前缀和,然后将前缀和进行排序,如果存在连续两个元素相同的情况即存在一个和为零的子数组,否则不存在。算法的代码实现:[code="C++"]//// main.cpp// MyProjectForCPP//// Created by labuser on...原创 2011-11-03 16:22:31 · 347 阅读 · 0 评论 -
将一个整数拆分成两个整数的平方和算法
问题:请使用C/C++写一个程序实现将一个整数拆分成两个整数的平方和,把所有的可能的组合都要计算出来。答:假定输入的整数为n,则扫描1-(n的平方根)之间的整数,令row=1,column=(int)(sqrt((double)given)+0.5),使得row*row+column*column=n的数输出即可。代码如下所示:[code="C++"]//// ...原创 2011-11-03 15:26:42 · 4367 阅读 · 0 评论 -
如何实现数组的高效移位算法
问题:编写一个能够支持数组快速移位的算法,时间复杂度在O(N)以内。答:要实现在线性的时间内实现数组的快速移动,就要考虑如何使用逆序算法来达到移动的目的。例如,我要移动的数组元素称为A,剩余的部分称为B,那么原来次序为AB,如何变成BA呢?其实根据倒置的算法是可以实现移位操作的,我们先取A'为A的逆序序列,B'为B的逆序序列,进行(A'B')'操作即可得到BA序列。实现算法如下:[...原创 2011-11-03 13:00:14 · 661 阅读 · 0 评论 -
Java实现一个简单的BitArray
在处理大数据的排序的时候,位图是经常使用的一种数据结构,在JDK中已经提供了现成的BitSet类,但是如果需要做一些比较简单的应用且能够有效控制程序的效率,还是使用数组实现一个简单的BitArray吧。以下是一个简单BitArray的实现,没有考虑线程安全的问题,适合在不需要多线程并发的情况下使用。[code="java"]import java.lang.IllegalArgumen...原创 2011-10-12 12:59:27 · 955 阅读 · 0 评论