百度用户研究南京笔试题

| 收藏本文 下载本文 作者:起床喝一杯拿铁

下面小编为大家带来百度用户研究南京笔试题(共含9篇),希望能帮助大家!同时,但愿您也能像本文投稿人“起床喝一杯拿铁”一样,积极向本站投稿分享好文章。

百度用户研究南京笔试题

篇1:百度用户研究南京笔试题

百度用户研究南京笔试题

因为专业完全不相干,就是过去打个酱油,所以心态很轻松,发题目攒个rp,留给后来者看看

1.得吊丝者得天下,你怎么理解这句话

设计一个方案,研究 丝的'购物行为和潜在需求

2.你见过哪些网络产品中的广告;说说你的态度

设计一个方案研究在网页搜索中广告的不同位置、不同匹配度、不同数量对广告的影响

3.你妈是个广场舞爱好者,喜欢收集教学视频,要你买个移动硬盘,你说云端硬盘比较好,像你妈简述云端硬盘的概念以及优势

4.百度要开发高校版百度地图,设计核心功能,并用一句话解释;选出最重要的核心功能,并写出筛选过程

5.你是个快餐店长,店里同时有以下行为,写出处理过程及原因

(1)客人吃完了,桌上很多餐盘

(2)客人问店里有哪些套餐

(3)客人吃完了等着结账

(4)供应商等老板签收原材料

(5)有客人在门外犹豫是不是要进来

(6)有客人等着干净桌子

篇2:百度用户体验工程师笔试题

1.方差分析的统计原理和运用条件

方差分析需要以下三个假设条件:(1)、在各个总体中因变量都服从正态分布;(2)、在各个总体中因变量的方差都相等;(3)、各个观测值之间是相互独立的

2.什么是社会网络研究?它的主要观点是什么?有哪些应用?

社会网络研究基本上坚持如下重要观点:

(1)世界是由网络而不是由群体或个体组成的;

(2)网络结构环境影响或制约个体行动,社会结构决定二元关系(dyads)的运作;

(3)行动者及其行动是互依的单位,而不是独立自主的实体;

(4)行动者之间的关系是资源流动的渠道;

(5)用网络模型把各种(社会的、经济的、政治的)结构进行操作化,以便研究行动者之间的持续性的关系模式;

(6)规范产生于社会关系系统之中的各个位置(positions);

(7)从社会关系角度入手进行的社会学解释要比单纯从个体(或者群体)属性角度给出的解释更有说服力;

(8)结构方法将补充并超越个体主义方法;

(9)社会网络分析最终将超越

3.市场调研过程分为几个阶段?各个阶段的核心任务和目标是什么?

市场调研流程的11个步骤:

1. 确定市场调研的必要性

2. 定义问题

3. 确立调研目标

4. 确定调研设计方案

5. 确定信息的类型和来源

6. 确定收集资料

7. 问卷设计

8. 确定抽样方案及样本容量

9. 收集资料

10. 资料分析

11. 撰写最终调研报告并演示

篇3:百度用户体验工程师笔试题

1.用户体验研究领域有哪些专家?用一句话描述他们的主要观点?

2.用户体验研究和产品运营之间的关系

3.交互设计是什么?一个好的交互设计具备哪些特征?举例说明。

交互设计的3个特征

那么我们就来看看交互设计过程的3个关键特征:

以用户为中心

“以用户为中心”的意思就是”让用户参与整个项目开发过程”。这是交互设计的一个重要观点,因为只有用户才是产品成功与否的最终评判者。产品只有在用户满意的条件下才可能卖得好,从而为你带来效益。用户不满意的产品肯定会被淘汰。

也许我们并不能保证让用户参与开发的方方面面,但把”以用户为中心”作为一个口号,能鼓励我们关注这些问题,并提供让用户参与评估并提出反馈的机会。

建立明确具体的可用性标准

在项目开始的时候,你就应该确定这个项目的可用性目标和用户体验目标,并做出明确说明,同时所有的开发人员也应该就这些问题达成一致。这些标准是后续工作的纲领性文件,一旦明确建档,任何人不得有异议。这些标准便于你选择不同的候选方案,而且在产品开发过程中,你也能随时根据标准检查这些方案。有这么一个纲领文件,在设计了一半的时候如果对某些根本问题出现了争执,你也好办得多。

反复迭代

“迭代”就是反复进行设计过程中的某些阶段。通过”迭代”,你就能利用反馈来改进设计。反复进行”设计—测试”,测试就会更全面、更彻底,最终能够发现并解决绝大多数的问题。

另外,由于用户和设计人员都参与设计,也许有的人希望这种方案,而另一些人则喜欢那种。这也需要进行”迭代”,检测方案是不是能够满足需求。而且各个方案也能相互启发,取长补短。不论设计人员多么优秀,也不论用户对新产品多么有想象力,都必须使用反馈来修正构思,而且需要反复若干次。在设计创新的产品时,这一点尤其重要。迭代是不可避免的,因为设计人员不可能一次就找出正确的解决方案。你能够保证你的每次决定都万无一失么?

篇4:百度笔试题ZZ

感觉他们挺重视字符串的,四个都跟字符串有关还有一个跟搜索引擎有点关系

1.实现 void delete_char(char * str, char ch);

把str中所有的ch删掉

2.把字符串S中所有A子串换成B,这个没给函数原型

我直接#i nclude 用strstr函数,呵呵不知道他们是不是想考KMP :p

3.搜索引擎的日志要记录所有查询串,有一千万条查询,不重复的不超过三百万

要统计最热门的10条查询串. 内存<1G. 字符串长 0-255

(1) 主要解决思路 //具体用词和原题不大一样

(2) 算法及其复杂度分析

4.有字典,设计一个英文拼写纠正算法 (1) 思想 (2) 算法及复杂度 (3) 改进

5. { aaa, bb, ccc, dd }, { bbb, ff }, { gg } 等一些字符串的集合

要求把交集不为空的`集合并起来,如上例会得到 { aaa, bb, ccc, dd, ff }, {gg}

(1) 思想 (2) 算法及复杂度 (3) 改进

其中改进叫“开放性问题”,

不过我觉得有些ft的是既然想到改进了为什么算法里不写进去?

4还好办,可以说再提供一些构词法及词组信息.

5输入上又没什么好动的.我只好在算法实现里写得简单点然后后面多说

篇5:百度笔试题及答案

1、vsftpd配置本地用户传输速率的参数( )

A:anon_max_rate

B:user_max_rate

C: max_user

D: local_max_rate

答案:D

解析:vsftpd 是一个在类UNIX 操作系统上运行的FTP服务器,它是一个完全免费的、开放源代码的ftp服务器软件。vsftp支持很多其他的 FTP 服务器所不支持的特征,比如:高安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

vsftpd配置参数中:

local_max_rate本地用户的传输速率限制,单位为bytes/second,如果是0 为不限制。

anon_max_rate匿名用户的传输速率限制,单位为bytes/second,如果是0 则不限制。

2、软件项目存储于/ftproot,允许apache用户修改所有程序,设置访问权限的指令( )

A:chmod apache -R /ftproot

B: chgrp apache /frproot

C: chown apache /ftproot

D: chmod apache /ftproot

答案:A

解析:B选项的chgrp命令是变更文件或目录所属群组。C选项的chown将文件的拥有者改为指定的用户或组。A、D选项的chmod 修改文件和文件夹读写执行属性;-R的作用是:可递归遍历子目录,把修改应到目录下所有文件和子目录。

3、设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。

A:7

B:5

C:8

D:6

答案:B

解析:在一个无向图G中,若从顶点Vi到顶点Vj有路径相连,则称Vi和Vj是连通的。连通图是指任意两个结点之间都有一个路径相连。6个节点的无向图,至少要5个边才能确保是任意两个节点之间都有路径相连。下图是一种可能的连接方式:

4、关于Hadoop系统的作业任务调度等问题,以下描述错误的是( )

A:JobTracker是一个master服务,软件启动之后JobTracker接受Job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失效的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。

B:JobClient会在用户端通过JobClient类对Job配置参数、打包成jar文件存储到hdfs,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)

C:Nagios不可以监控Hadoop集群,因为它不提供Hadoop支持。

D:HDFS默认Block Size为32M

答案:CD

解析:在Hadoop中,作业是使用Job对象来抽象的。JobClient负责向JobTrack提交Job:包括申请Job的ID、配置Job的运行环境、检查Job的输出配置、对Job的输入数据进行切分生成Job的目录以及相应文件(如jar、xml等)。即JobClient会在用户端通过JobClient类将配置好参数的Job打包成jar文件存储到hdfs,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。

Nagios是一个可运行在Linux/Unix平台之上的开源监视系统,可以用来监视系统运行状态和网络信息。Nagios可以监视所指定的本地或远程主机以及服务,同时提供异常通知功能。Nagios可以用来监控Hadoop集群,快速定位出现问题的机器。

HDFS的块大小由dfs.block.size参数决定,默认是67108864,即64M。

5、Fisher线性判别函数的求解过程是将M维特征矢量投影在( )中进行求解。

A:M-1维空间

B:一维空间

C:三维空间

D:二维空间

答案:B

解析:Fisher线性判别函数是将多维空间中的特征矢量投影到一条直线上,也就是把维数压缩到一维。寻找这条最优直线的准则是Fisher准则:两类样本在一维空间的投影满足类内尽可能密集,类间尽可能分开,也就是投影后两类样本均值之差尽可能大,类内部方差尽可能小。一般而言,对于数据分布近似高斯分布的情况,Fisher线性判别准则能够得到很好的分类效果。

6、采用开放定址法处理散列表的冲突时,其平均查找长度( )

A:高于二分查找

B:高于链接法处理冲突

C:低于二分查找

D:低于链接法处理冲突

答案:B

解析:散列表(哈希表)中处理冲突的方法有开放定址(Open Addressing)法和拉链(Chaining)法等。开放定址法是指一旦发生了冲突,就去寻找下一个空的散列地址。按照探查方法不同,可将开放定址法区分为线性探查法、二次探查法、双重散列法等。拉链法解决冲突的做法是将所有关键字为同义词的结点链接在同一个单链表中。拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短。

7、并发操作会带来哪些数据不一致性( )

A:丢失修改、脏读、死锁

B:不可重复读、脏读、死锁

C:不可修改、不可重复读、脏读、死锁

D:丢失修改、不可重复读、脏读

答案:D

解析:并发操作指的是多用户或多事务同时对同一数据进行操作。

当两个或多个事务选择同一数据,并且基于最初选定的值修改该数据时,会发生丢失修改问题。每个事务都不知道其它事务的存在,最后的更新将重写由其它事务所做的更新,这将导致修改丢失。

当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据。

一个事务重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务修改过。即事务1读取某一数据后,事务2对其做了修改,当事务1再次读数据时,得到的与第一次不同的值。在一个事务中前后两次读取的结果并不致,导致了不可重复读。

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

8、类域界面方程法中,不能求线性不可分情况下分类问题近似或精确解的方法是( )

A:势函数法

B:基于二次准则的H-K算法

C:伪逆法

D:感知器算法

答案:D

解析:线性分类器的设计就是利用训练样本集建立线性判别函数式,也就是寻找最优的权向量的过程。求解权重的过程就是训练过程,训练方法的共同点是,先给出准则函数,再寻找是准则函数趋于极值的优化方法。ABC方法都可以得到线性不可分情况下分类问题近似解。感知器可以解决线性可分的问题,但当样本线性不可分时,感知器算法不会收敛。

9、假设有4条语句S1:a=5x; S2:b=5+y;S3:c=a+b;S4:d=c+y;根据Bernstein条件,下面说法正确的是( )

A:S1,S4可并发执行

B:S1,S2不可并发执行

C:S2,S3可并发执行

D:S3,S4不可并发执行

答案:D

解析:Bernstein条件是指两个过程如果有数据冲突,那么就没法并行执行。

A选项中,S4需要读数据c,而S3中数据c依赖于a,因此S4依赖于S1的结果,S1、S4不可并发执行。B选项中,S1依赖于x,S2依赖于y,S1和S2之间没有数据冲突,可以并发执行。C选项中,S3依赖于b,S3和S2之间有数据冲突,不可并发执行。D选项中,S4需要数据c,S4的执行依赖S3的结果,不可并发执行。

10、在C++语言中,若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )

A:Data+operator(Data);

B: Data+(Data);

C: Data operator+(Data);

D: Data operator+(Data,Data);

答案:C

解析:运算符重载声明形式为:返回类型 operator运算符(参数表);由于加法是二目运算符,作为类成员函数,还需要一个数据做“被加数”,因此参数列表中Data的数目是1个。此外,使用友元函数也能够达到同样的目的,其声明为friend Data operator+(Data,Data),因为友元函数不是类的成员函数,没有this指针,其形参数目与运算符需要的数目相同。

11、在一个带头结点的单链表HL中,若要在第一个元素之前插入一个由指针p指向的结点,应该使用的语句为:( )

A:HL =p; p->next =HL;

B: p->next =HL ;HL =p;

C: p->next =HL ->next;HL ->next =p;

D: p->next =HL ;p =HL;

答案:C

解析:在插入节点时:先要将待插入节点p的后继节点设为第一个元素,也就是p->next =HL ->next。然后再将头结点HL的后继节点改为p节点,HL ->next =p。下图中红色的箭头说明了插入操作执行的顺序,如果顺序不当,就会丢失指向第一个元素的指针,破坏链表结构。

12、在KMP算法中,已知模式串为ADABCADADA,请写出模式串的next数组值( )

A:0,1,1,2,1,1,2,3,4,3

B:1,2,3,2,1,1,2,4,4,3

C:0,1,1,1,2,1,2,3,4,3

D:2,1,1,2,1,1,2,3,3,4

答案:A

解析:“前缀”指除了最后一个字符以外,一个字符串的全部头部组合;“后缀”指除了第一个字符以外,一个字符串的全部尾部组合。next数组值就是“前缀”和“后缀”的最长的共有元素的长度。

首先求最大相同前缀后缀长度。“A”的前缀和后缀都为空集,没有共有元素,共有元素长度为0;“AD”的前缀为[A],后缀为[D],没有共有元素,共有元素长度为0;“ADA”的前缀为 [A, AD],后缀为[DA, A],共有元素为A,长度为1;“ADAB”的前缀为[A, AD, ADA],后缀为[DAB, AB,B ],共有元素长度为0;以此类推,最大公共元素长度为0,0,1,0,0,1,2,3,2。

然后将最长相同前缀后缀长度值右移一位,并将next[0]初值赋为-1,得到的next数组:-1,0,0,1,0,0,1,2,3,2。

在某些语言中,数组不是从0开始索引的,而是从1开始索引,只需要将next数组中每个值加1,得到0,1,1,2,1,1,2,3,4,3。

13、影响聚类算法效果的主要因素有( )

A:特征选取

B:已知类别的样本质量

C:模式相似性测度

D:分类准则

答案:ACD

解析:聚类的目标是使同一类对象的相似度尽可能地大;不同类对象之间的相似度尽可能地小。聚类分析的算法可以分为划分法(Partitioning Methods)、层次法(Hierarchical Methods)、基于密度的方法(Density-Based Methods)、基于网格的方法(Grid-Based Methods)、基于模型的方法(Model-Based Methods)、谱聚类(Spectral Clustering)等,不用的方法对聚类效果存在差异(D正确);特征选取的差异会影响聚类效果(A正确)。聚类的目标是使同一类对象的相似度尽可能地大,因此不同的相似度测度方法对聚类结果有着重要影响(C正确)。由于聚类算法是无监督方法,不存在带类别标签的样本,因此,B选项不是聚类算法的输入数据。

篇6:百度笔试题回顾

百度笔试题回顾

第一道,填空题,特别基础,我想基本上学计算机的应该都没什么问题,所以题目记不太

清了,比如计算数组的内存地址之类的。

第二道,编码题,让写出压缩数字序列的算法、和解压数字序列的'算法。压缩方法也已经

给出来了,只要编码实现。也比较简单

第三道,给出一个递归的函数、先问这个函数是干嘛的,然后要求把函数转化为非递归的

这道题最让我吐血,本来为了分析函数功能,我已经把函数写成非递归的,但是没看出来

函数是干嘛的,结果就一直空着,好久不考试,忘了即使第一问没答出来,也可以回答第

二问,晕,

交完卷才回过神来。快吐死了。

第三道,好像是涉及一个DNS解析的缓存系统,还给了一堆的用户访问量之类的数据。只

剩下两分钟了看题目了,没什么想法,乱写一通

篇7:百度软件笔试题

百度软件笔试题

一、选择题:15分 共10题

1. 一个含有n个顶点和e条边的简单无向图,在其邻接矩阵存储结构中共有____个零元素,

A.e B.2e C.n2-e D.n2-2e

2. ____是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。

A.继承(Inhertance) B.模板(Template)

C.对象的自身引用(Self-Reference) D.动态绑定(Dynamic Binding)

3. 应用层DNS协议主要用于实现 网络服务功能.

A. IP地址到网络设备名字的映射 B. IP地址到网络硬件地址的映射

C. 网络设备名字到IP地址的映射 D. 网络硬件地址到IP地址的映射

4. linux默认情况下,一个进程最多能打开多少文件?

A.64 B. 128 C. 512 D. 1024

5. 下面结构体

struct s1 {

char ch, *ptr;

union {

short a, b;

unsigned int c:2, d:1;

}

struct s1 *next;

};

的大小是_____:

A. 12字节 B.16字节 C.20字节 D. 24字节

6. 任何一个基于“比较”的内部排序的算法,若对6个元素进行排序,则在最坏情况下所需的比较次数至少为____。

A.10 B.11 C.21 D.36

7. 以下不是进程间通讯的是___

A 共享内存 B 信号量 C线程局部存储 D 消息队列

8. 下面程序,求count的值

int func(x)

{

int count= 0;

x=9999;

while(x)

{

Count ++;

x = x&(x-1);

}

return count;

}

A 8; B 10; C 5; D 11

9. 使用malloc系统调用分配的内存是在____ 上分配的?

A 栈; B bss; C 物理内存; D 堆

10. 最坏情况下,合并两个大小为n的'已排序数组所需要的比较次数_____

A.2n B.2n-1 C.2n+1 D.2n-2

二、简答题:20分,共3题

1. (5分)下面这段代码是把中英文混合字符串(汉字用两个字节表示,特点是第一个字节的最高位为1)中的大写字母转化为小写字母,请找出其中的bug,注意各种异常情况。

for (char *piterator = szWord; *piterator != 0; piterator++)

{

if (*piterator & 0x80 != 0)

{

piterator++;

}

else if (*piterator >= 'A' && *piterator <= 'Z')

*piterator += 32;

}

2. (5分)对给定的上亿条无序的url,请按照domain、site以及path分别排序,并请指出排序过程中可能会遇到的哪些问题?如何提高效率?

例如:www.baidu.com/path/about.html,domain、site以及path的定义分别如下:

Domain:baidu.com

Site:www.baidu.com

Path: www.baidu.com/path

3. (10分)某型CPU的一级数据缓存大小为16K字节,cache块大小为64字节;二级缓存大小为256K字节,cache块大小为4K字节,采用二路组相联,

经测试,下面两段代码运行时效率差别很大,请分析哪段代码更好,以及可能的原因。

为了进一步提高效率,你还可以采取什么办法?

A段代码

int matrix[1023][15];

const char *str = “this is a str”;

int i, j, tmp, sum = 0;

tmp = strlen(str);

for(i = 0; i < 1023; i++) {

for(j = 0; j < 15; j++) {

sum += matrix[i][j] + tmp;

}

}

B段代码

int matrix[1025][17];

const char *str = “this is a str”;

int i, j, sum = 0;

for(i = 0; i < 17; i++) {

for(j = 0; j < 1025; j++) {

sum += matrix[j][i] + strlen(str);

}

}

三、编程题:30分 共1题

注意:要求尽可能提供完整代码,如果可以编译运行酌情加分。

1. 内存中有一个长数组,条目数为10万,数组单元为结构体struct array,sizeof(struct array)为512字节。结构有一int型成员变量weight。现需要取得按weight值从大到小排序的前500个数组单元,请实现算法,要求效率尽可能高。

四、设计题:35分 共1题

注意:请尽可能详细描述你的数据结构、系统架构、设计思路等,建议多写一些伪代码或者流程说明。

1. 请设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的功能。已经给定一个函数,可以由字符串映射到一个签名,每个签名由两个unsigned int类型组成。假设每一个字符串能够对应唯一的一个签名,完全没有重复(或者重复的概率可以忽略),并且签名分布足够均匀。

请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?如果操作很频繁,该如何优化?

///////////////

有一个数据库,用一张表存储了某超市的历史销售记录,这个表中包含如下数据信息:商品大类、商品小类、商品编号、商品名称、供应商编号、供应商名称、入库时间、入库价格、批次、当批入库总量、目前库存量、销售时间、商品单价、销售数量、付款方式、销售金额、是否优惠、优惠金额、销售柜台号、销售终端号、销售人员姓名等。

(1)请把数据表拆分成符合第三范式的多个表(写出表的结构定义SQL语句);

(2)根据拆分后的结构,写出如下统计SQL语句:

某种商品的总销售额;

某个供应商的总交易次数;

每月每个商品大类的销售额排名;

(3)如果对该表的操作主要是如(2)所要求的数据统计。在数据量非常大的情况下,上述统计会出现效率问题,要更快的得到上述数据统计的结果,都有哪些思路和办法?如果你面对这样一个需求,会采取什么样的设计,或者对现有的设计进行怎样的改进?

篇8:百度招聘笔试题

百度校园招聘笔试题目分享:

1、找到满足条件的数组

给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93,这样这个函数可以看成一个生成器,如93可以看成由78生成。

定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。

回答:

申请一个长度为10000的bool数组,每个元素代表对应的值是否可以有其它数生成。开始时将数组中的值都初始化为false。

由于大于10000的数的生成数必定大于10000,所以我们只需遍历1到10000中的数,计算生成数,并将bool数组中对应的值设置为true,表示这个数可以有其它数生成。

最后bool数组中值为false的位置对应的整数就是不能由其它数生成的。

2、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。

例子:

func(7) = 4,可以证明最少需要4次运算

n = 7

n-1 6

n/2 3

n-1 2

n/2 1

要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(文字描述),完成代码,并分析你算法的时间复杂度。

答:

假设n表示成二进制有x bit,可以看出计算复杂度为O(2^x),也就是O(n)。

将n转换到二进制空间来看(比如7为111,6为110):

- 如果最后一位是0,则对应于偶数,直接进行除2操作。

- 如果最后一位是1,情况则有些复杂。

**如果最后几位是???01,则有可能为???001,???1111101。在第一种情况下,显然应该-1;在第二种情况下-1和+1最终需要的步数相同。所以在???01的情况下,应该选择-1操作。

**如果最后几位是???011,则有可能为???0011,???11111011。在第一种情况下,+1和-1最终需要的步数相同;在第二种情况下+1步数更少些。所以在???011的情况下,应该选择+1操作。

**如果最后有更多的连续1,也应该选择+1操作。

如果最后剩下的各位都是1,则有11时应该选择-1;111时+1和-1相同;1111时应选择+1;大于四个1时也应该选择+1;

由以上的分析可知,奇数的时候加1或减1,完全取决于二进制的后两位,如果后两位是10、00那么肯定是偶数,选择除以2,如果后两位是01、11,那么选择结果会不一样的,如果是*****01,那么选择减1,如果是*****11,那么选择加1,特殊情况是就是n是3的时候,选择减1操作,

3、一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL。

回答:

首先使用包含500个url的文件创建一个hash_set。

然后遍历50M的url记录,如果url在hash_set中,则输出此url并从hash_set中删除这个url。

所有输出的url就是两个记录里相同的url。

4、海量日志数据,提取出某日访问百度次数最多的那个IP。

回答:

如果日志文件足够的大,大到不能完全加载到内存中的话。

那么可以考虑分而治之的策略,按照IP地址的hash(IP)%1024值,将海量日志存储到1024个小文件中。每个小文件最多包含4M个IP地址。

对于每个小文件,可以构建一个IP作为key,出现次数作为value的hash_map,并记录当前出现次数最多的1个IP地址。

有了1024个小文件中的出现次数最多的IP,我们就可以轻松得到总体上出现次数最多的IP。

5、蚂蚁爬杆问题

有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,他们只会朝前走或掉头,但不会后退,当两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。求所有蚂蚁都离开木杆的最小时间和最大时间。

答案:

两只蚂蚁相遇后,各自掉头朝相反方向走。如果我们不考虑每个蚂蚁的具体身份,这和两只蚂蚁相遇后,打个招呼继续向前走没有什么区别。

所有蚂蚁都离开木杆的最小时间为

max(min(3,27-3),min(7,27-7), min(11,27-11), min(17,27-17),min(23,27-23))=11

所有蚂蚁都离开木杆的最大时间为

max(max(3,27-3),max(7,27-7), max(11,27-11), max(17,27-17),max(23,27-23))=24

6、有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。如何按照query的频度排序?

回答:

1)读取10个文件,按照hash(query)%10的结果将query写到对应的文件中。这样我们就有了10个大小约为1G的文件。任意一个query只会出现在某个文件中。

2)对于1)中获得的10个文件,分别进行如下操作

-利用hash_map(query,query_count)来统计每个query出现的次数。

-利用堆排序算法对query按照出现次数进行排序。

-将排序好的query输出的文件中。

这样我们就获得了10个文件,每个文件中都是按频率排序好的query。

3)对2)中获得的10个文件进行归并排序,并将最终结果输出到文件中。

篇9:南京乾坤笔试题

南京乾坤笔试题

笔试:

大概分四个部分

第一部分:基本信息的填写,

第二部分:程序题。

1.有两张表(库存表和销售表),要求查出每天的放库存量(量关键一题)

2.两个VB的题目(具体内容记不清楚了)

3.在ASP中设计报表,

4.给一个需求,要求写出设计思路。

其它还有几个数据库的题,记不清了。

第三个部分:是不记分的,主要是些与编程无关的'问题(比如说中国的十大钢铁企业,现在最流行的软件等)

第四个部分:是财务方面的题,上次基本上没写(名词解释)。

乾坤主要是用VB做MS系统的,用VB和SQL2000开发。

百度笔试题

笔试题

新闻业笔试题

C++笔试题

马士基笔试题

ASP.NET笔试题

管理方式笔试题

笔试题电路

思科笔试题

PMP笔试题

百度用户研究南京笔试题(通用9篇)

欢迎下载DOC格式的百度用户研究南京笔试题,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

相关文章

点击下载本文文档