Interview question
lanmolei814
这个作者很懒,什么都没留下…
展开
-
题目:海量数据处理,从大文件中找出频数最高的词
题目:有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词.首先,我们看到这个题目应该做一下计算,大概的计算,因为大家都清楚的知道1G的文件不可能用1M的内存空间处理。所以我们要按照1M的上线来计算,假设每个单词都为16个字节,那么1M的内存可以处理多少个单词呢? 1M = 1024 KB = 1024 * 1024 B转载 2015-03-14 18:12:09 · 1354 阅读 · 0 评论 -
题目:海量数据处理面试题
十道海量数据处理面试题与十个方法大总结 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入转载 2015-03-14 19:17:58 · 412 阅读 · 0 评论 -
题目:如何判断一个机器是大端还是小端
如何判断一个机器是大端还是小端 关于大端小端的概念, 小端:数据的高位字节存放在高地址内,数据的低位字节存放在低地址内。 大端:数据的高位字节存放在低地址内,数据的低位字节存放在高地址内。 典型的体系结构中,一个字是4个字节,那么数据0x0A0B0C0D,在小端机器中从地址到高址的存放方式为:0x0D,0x0C,0x0B,0x0A; 在大端转载 2015-03-18 22:45:36 · 5066 阅读 · 2 评论 -
题目:空结构体和空类的大小
空结构体和空类空结构体1234567891011#include typedefempty{}a; int main() { printf(“%d”,sizeof(a)); }以上代码如果采用gcc编译结果是0;采用g++结转载 2015-04-05 17:36:08 · 607 阅读 · 0 评论 -
局部常量字符串指针及常量字符串数组 返回值
问题1:#include "stdio.h"char *get_string_1(){ char p[] = "hello world!"; //p数组作为局部变量被存储在栈区;在定义p数组时同时将其内容初始化 return p; //为"hello world!", 也就是说此处的"hello world!"只是用来初始化p数原创 2015-04-24 20:16:33 · 587 阅读 · 0 评论 -
面试题:替换空格和清除空格
一、替换空格请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.",则输出”We%20are%20happy."分析:在空间复杂度尽可能低的情况下,不允许开辟一个新的数组来存放替换空格后的字符串。如果从前往后替换字符串,那么保存在空格后面的字符串肯定会被覆盖。假设字符串的长度为n。对每个空格字符,需要移动后面O(n)个字符,因此对含有O(n转载 2015-04-25 22:32:27 · 422 阅读 · 0 评论 -
review c/c++ question
1、i+++j的结合问题:输出k的值 int i=1,j=2,k=0; k=i+++j;答案:k=3; 分析:i+++j的结合方式为 (i++)+j。还有一个就是i+++++j这个表达式,它按照词法"贪心法“来解释。也只能这样解释成 (i++)++ +j但这样的话 i++它就不是左值了。所以后面的++操作会报错。如果你写成i++ + ++j这样就没问题了。原因:原创 2015-01-29 22:29:43 · 842 阅读 · 0 评论 -
实现strcpy , strncpy, memcpy
面试官很喜欢让求职者写一些常用库函数的实现,有很多是和字符串相关的,有一些是关于内存拷贝的。一般,常会让写的函数有以下几个:strcpy , strncpy, memcpy。memset一般不会让去写,但这个函数也很有特点,有很多容易用错的地方。一并总结吧。1. strcpystrcpy函数的原型是:char * strcpy(char* dest, con转载 2015-12-16 23:23:45 · 315 阅读 · 0 评论 -
字符串中最长无重复字符的子串
题目:求一个字符串中最长的没有重复字符的子串。方法一:穷举法,使用2重外循环遍历所有的区间,用2重内循环检验子串是否符合“无重复字符”这一要求。其中外层循环i、j 遍历所有的下标,m、n是内层循环,检查区间[i,j]是否符合要求。空间复杂度是O(1),时间复杂度O(N^4)。//O(N^4)的时间复杂度int max_unique_substring1(char * str){转载 2015-12-14 23:09:25 · 381 阅读 · 0 评论 -
螺旋数组打印
给水平方向和垂直方向各设置两个坐标,x_start,x_end, y_start,y_end, 分别表示当前水平方向输出区间应该在x_start和x_end之间,垂直方向输出区间在y_start和y_end直接,每次转弯的时候只需要改变区间的边界,如下:#include #include int main(){ int a[][6]={{1, 2, 3, 4,原创 2015-12-17 13:02:04 · 618 阅读 · 0 评论 -
Programmers interview book
第7章 指针与引用7.1 指针基本问题1 、关于this指针 (1) this只能在成员函数中使用 全局函数,静态函数都不能使用this,实际上,成员函数默认的第一个参数是T * const this,由此可见,this在成员函数的开始前构造,在成员的结束后清除,这个声明周期同任何一个函数的参数是一样的,没有任何区别,我们会发现在调用的形式上与静态调用没有什么区别,但区别还是有原创 2015-12-03 23:04:25 · 323 阅读 · 0 评论 -
题目:海量数据处理,40亿个不重复的unsigned int的整数,如何判断某数是否在其中?
给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?速度相当的快,应该是在小于o(n)的时间内就可以解决问题。但是rand()产生的随机数范围有限制,可以想想其他办法产生随机数。可以看到,所用到的内存很小,而且程序反应速度也很快。这种方法是基于要寻找数的本身特性。也可以成为bit magic。这就是比特位的强大魅力所在转载 2015-03-14 18:08:18 · 1319 阅读 · 0 评论 -
题目:TCP 的三次握手是什么,为什么采用三次握手,两次握手不可以吗?
TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个S原创 2015-03-14 17:29:15 · 6151 阅读 · 3 评论 -
题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)。分析:分别从数组两端向中间推进。推出条件为左右相撞 当左端值为偶数,并且右端值为奇数时交换二值,用到一个临时空间。 当左端值为奇数,向右推进一个单位 当右端值为偶数,向左推进一个单位Code如转载 2015-03-14 17:08:13 · 1405 阅读 · 0 评论 -
工作面试时最难的25个问题
工作面试时最难的25个问题准备是成功的一半如果你是一个对目前的职位不满意,正着手去在新的一年里找到一个新的职位,这篇文章就是你的一个帮手。工作面试是你去面对未来的老板的征途中最重要的一个过程。你必须像进行一个击剑锦标赛或着一个国际象棋比赛那样的坚韧和敏捷来对待面试。 本为是从 William J. Morin和James C. Cabrera 的“在失业的时候如何生存并成功的找到转载 2010-05-18 18:33:00 · 389 阅读 · 0 评论 -
求第1500个只有2,3,5因子的数
求第1500个只有2,3,5因子的数 数是从小到大排列 第一个数是1,1=2^0*3^0*5^0 要求用C实现,至少要讲清楚算法思路 #include #define N 1500 int main() { long result[N];转载 2014-08-18 23:47:58 · 2190 阅读 · 0 评论 -
素数算法
一、素数素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。比1大但不是素数的数称为合数,1和0既非素数也非合数。二、素数判断算法思路1):因此判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。思路2):另外判断方法还可以简化。m不必被 2 ~ m转载 2015-01-29 17:58:34 · 1078 阅读 · 0 评论 -
字符串转换整数及整数转换字符串
字符串转换整数及整数转换字符串1、字符串转换成整型数C语言库函数:atoi 实现了此功能。int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。 相同功能实现代码如下:转载 2014-12-24 20:33:51 · 1754 阅读 · 0 评论 -
题目: C语言内存分配问题和C语言中的内存
题目:请问运行Test函数后会是什么样的结果?NO.1void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str,hello world); printf(s转载 2015-03-25 23:01:02 · 455 阅读 · 0 评论 -
题目:什么是内联函数
一、什么叫inline函数? inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由于每当代码调用到内联函数,就需要在调用处直接插入转载 2015-03-19 11:03:06 · 12966 阅读 · 4 评论 -
题目:C/C++类型转换
类型转换是将一种类型的值映射为另一种类型的值,类型转换分为两种,即显式(Explicit)和隐式(Implicit)。一、隐式类型转换1、C/C++中类型的自动隐式转换规则如下: 1>. 程序在执行算术运算时,低类型可以转换为高类型。 2>. 在赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它。 3>. 当在函数调用时,将实参值赋给形参,系统隐式地将实原创 2015-03-29 20:30:56 · 823 阅读 · 0 评论 -
题目:实现atof/atoi,考虑正负号
一、Data Conversion函数作用atof把字符串转换为float型数字atoi把字符串转换为int型数字atol把字符串转换为long型数字__toascii把字符转换为ascii码tolower把字符转换为小写字符toupper把字符转换为大写字符abs取转载 2015-03-29 21:29:07 · 2552 阅读 · 0 评论 -
题目:代码实现判断单链表是否有环
一、单链表环的定义:有环的定义是,链表的尾节点指向了链接中间的某个节点。比如下图,如果单链表有环,则在遍历时,在通过结点J之后,会重新回到结点D。题目:0.如何判断单链表里面是否有环?算法的思想是设定两个指针p, q,其中p每次向前移动一步,q每次向前移动两步。那么如果单链表存在环,则p和q相遇;否则q将首先遇到null。这里主要理解一个问题,就是为什么当单链表转载 2015-03-29 22:45:43 · 4301 阅读 · 0 评论 -
题目:1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现? (1) 方法一:(当N为比较大时警惕溢出)将1001个元素相加减去1,2,3,……1000数列的和,得到的差即为重复的元素。 int Find(int* a) {转载 2015-03-29 21:15:05 · 4763 阅读 · 6 评论 -
题目:栈的表示和实现(创建栈,push,pop)
#includeusing namespace std;#define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACINEREMENT 10 //存储空间分配增量#define ERROR 0#define OK 1 class Stack{private: int*top; //栈顶指针转载 2015-03-22 13:47:42 · 2909 阅读 · 0 评论 -
找出一个字符串中最长连续相同子串
题目:找出一个字符串中最长连续相邻子串,比如ababcabc,最长连续字串是abc。分析:第一步,首先定义一个指针pStr定位于字串首部,再定义一个指针qStr指向pStr的下一个,然后qStr++找出与*pStr相同的字符;第二步,如果找到*qStr==*pStr,则递增两个指针,并计算下相同字符的数目num和这段相同子字符串的index。第三步,如果*qStr!=*pStr,则转载 2014-10-26 21:25:02 · 2251 阅读 · 0 评论