百度面试

 

百度笔试面试

1.char a=255;
sizeof(++a)=?(1)
a=?(-1)

2.删除掉cpp文件中的所有注释

// 删除掉src中的注释,保存到dst,dst长度为len
    
// 未考虑字符串中有特殊字符的情况
     void  DeleteComment( const   char   * src, char   * dst, int  len)
    
{
        
char *s=(char *)src;
        
int i=0;
        
while (*s)
        
{
            
//printf("%c/n",*s);
            if(*(s+1&& *s=='/'  && *(s+1)=='/')
            
{
                printf(
"注释1()/n");
                s
+=2;
                printf(
"掠过");
                
while (*&& *s!='/n')
                
{
                    printf(
"%c",*s);
                    s
++;
                }

                printf(
"/n");
                
if(!*s)
                    
return;
                
//s++;
            }

            
else if(*(s+1&& *s=='/'  && *(s+1)=='*')
            
{
                printf(
"注释2()/n");
                s
+=2;
                printf(
"掠过");
                
while (*&& *(s+1&& !(*s=='*'  && *(s+1)=='/'))
                
{
                    printf(
"%c",*s);
                    s
++;
                }

                printf(
"/n");
                
if(!*|| !*(s+1))
                    
return;
                s
++;
            }

            
else if(i<len)
                dst[i
++]=*s;
            s
++;
        }

        dst[i
++]=0;
    }


    
void  Test()
    
{
        
int len=0;
        
char *src=0;
        
char *dst=0;
        FILE 
*fp=fopen("1.cpp","r");

        CHECK(fp);
        fseek(fp,
0,2);
        len
=ftell(fp);
        printf(
"文件长度:%d/n",len);
        printf(
"文件内容:/n");
        src
=new char[len+1];
        fseek(fp,
0,0);
        fread(src,len,
1,fp);
        src[len]
=0;
        printf(src);

        dst
=new char[len+1];
        DeleteComment(src,dst,len);
        printf(
"/n======================================/n");
        Trace(dst);

        delete []src;
        delete []dst;
    }

 

 3.用脚本(bash)统计
两个文本文件的相同的行,
??
第一文件有而第二文件无的行
??,
两个文件的补集。
 cat file1 file2 | sort | uniq > 1.txt
4.设计一个简化的bbs系统:多用户,可发表主题,回复,同主题阅读,分不同的版面,为每一用户判断某一文章是否已读,等。
5.

面试
1.判断一个链表是否存在回路?
给指针加一个标志域,如访问过则置1.当遍历到标志为1的项说明有了回路。

定义2个指针,一快(fast)一慢(slow),即:从头向后遍历过程中,每循环一次,快指针一次向后移动2个元素,慢指针移动一个元素,每次判断(   fast==slow   ||   slow==fast->nest   ),如果成立,说明慢指针赶上了快指针,则为循环链表,否则,如果有一个指针到达NULL,则为单链表。

重新做一个链表,用于存放所有原链表中的节点,插入节点时按按地址顺序插入,  
  如果出现相同的地址就说明是死链,结束查询....

2.两个单向链表,有可能交叉,请设计算法判断是否交叉,如果交叉,返回交叉点!算法复杂度o(n)
两个链表最后是合并成一个 而不是交叉 所以:
(1)先找到p1,p2的最后一个节点,同时记录节点数量a,b;
(2)判断最后一个节点是否相同,

如果不相同则没相交。
如果相同 则从第一个节点和|a-b|+1个节点开始比较 看是否相等 不相等都寻找下一个节点
直到找到交叉点
3.硬盘文件系统设计,及磁盘整理算法
4.Hash表
5.php+MySQL
6.问参加过ACM/数学建模没有
7.多边形标记问题:
判断点是否在多边形内的问题?
我知道有两种方法:  
  1。累计角度法  
      过此点连接多边形的每一顶点,各相邻边角度之和为360度,则此点在多边形内。  
  否则为0度,在多边形外部。  
   
  2。射线法  
      过此点向任意角度发一条射线,若与多边形的各条边交点个数之和为偶数,则此点在  
  多边形之外,否则在多边形之内。  
      若有交点为多边形顶点则要另选一条射线重算。  
   
   
  请问哪种方法好一点(时间复杂度)?  
方法一对凹多边形可能会出现问题吧。
8.多线程

同步互斥的概念
同步:只有a做完才能做b。  
  互斥:a和b只是在一个时间做一个。  
   
  可用p,v操作来实现。

相交进程之间的关系主要有两种,同步与互斥。所谓互斥,是指散步在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。  
   
  显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。

例:  
      ...  
      s=1;  
      i=0;  
      cobegin  
          p1();  
          p2();  
      endbegin  
   
      p1(){  
          while(未完成){  
              p(s);  
              i++;  
              printf("%d",i);  
              v(s);  
            }  
        }  
       
        p2(){  
            while(未完成){  
                  p(s);  
                  i--;  
                  printf("%d",i);  
                  v(s);  
              }  
      }  
  p1(),p2()是两个进程。i++和i--分别是两个程序片断。在没有执行完p1()是不允许执行p2()的。这里的p1()和p2()并不是指一个完整的进程,只是两进程的公共资源(临界资源).

  当程序1调用程序2时,程序1就停下不动,直到程序2完成回到程序1来,程序1才继续下去,这就是所谓的“synchronous”,即同步。如果程序1调用程序2后,径自继续自己的下一个动作,那么两者之间就是所谓“asynchronous”,即异步。Win32   API中的SendMessage()就是同步行为,而PostMessage()就是异步行为。   
  同步机制有critical   sections(关键区域、临界区域),mutex(互斥器),semaphore(信号量),event(事件)。   
  在同步机制中,critical   sections是指一小块“用来处理一份被共享之资源”的程序代码,这里所指的资源,并不是指来自.RES(资源文件)的Windows资源,而是广义的指一块内存,一个数据结构,一个文件,或任何其他具有“使用之排他性”的东西。也就是说,资源每一次(同一时间)只能被一个线程处理。  
  mutex的用途和critical   sections非常类似,但是它牺牲速度已增加弹性。   

  其它两个我就不再说了,这些在《Win32多线程程序设计》中第四章同步机制中有详细的讨论和例子。


  “临界”   该段代码属于原子操作   
  “同步”   一般是双方协调,如一方等待  
  “互斥”   不能一起执行

  “临界状态”   处于临界状态的代码段一个时间段只允许一个进程访问   
  “同步”   多个进程之间协调对某些临界资源的访问顺序  
  “互斥”   当某个线程访问某个临界资源的时候,不允许别的线程同时访问此资源  
怎样才能实现线程的同步与互斥? 

EnterCriticalSection     LeaveCriticalSection  
  CreateSemaphore   ReleaseSemaphore   WaitForSingleObject  
  SetEvent   WaitForSingleObject   Mutex...
CSyncObject是MFC中解决互斥同步问题的基础类  
常用4种  
  关键代码段——单进程内  
  互斥量——互斥  
  信号灯——充许设定一个以上共享资源  
  事件内核对象——灵活  

以下面试题不是此次百度
1.全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
2.请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
3.请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
4.以下代码有什么问题?
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}
5.写一个函数,将其中的t都转换成4个空格。

都是华为的老题

1、全局变量是整个程序都可访问的变量,谁都可以访问,生存期在整个程序从运行到结束(在程序结束时所占内存释放),而局部变量存在于模块(子程序,函数)中,只有所在模块可以访问,其他模块不可直接访问,模块结束(函数调用完毕),局部变量消失,所占据的内存释放。
全局变量分配在全局数据段并且在程序开始运行的时候被加载. 局部变量则分配在堆栈里面。

2、交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看报文中的IP地质。路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以为了保证路由成功,每个网络都必须有一个唯一的网络编号。路由器通过察看报文中IP地址,来决定路径,向那个子网(下一跳)路由,也就是说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地质
但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来越模糊。
3、IP协议是网络层的协议,它实现了Internet中自动路由的功能,即寻径的功能,TCP协议是一个传输性的协议它向下屏蔽了IP协议不可靠传输的特性,向上提供一个可靠的点到点的传输,UDP提供的是一种无连接的服务,主要考虑到很多应用不需要可靠的连接,但需要快速的传输
4、
Test b();//定义了一个函数

 

 

百度面试体会——嘴力考验
http://file.yingjiesheng.com/list/company/internet/baidu/2007/04/07/2976.html
首先进来的是技术部的一个负责人,拿着我的简历,开始盘问。主要内
容是针对我简历上列出的所有工作经验和开发过的项目。俺的专业方向是自然语言处理,
做的是信息抽取(IE),和百度的IR也就一字之差,基本上还是很接近的。
面试GG问的问题主要是集中在一些具体的技术和方法,以及问了我对
业和internet上IR与传统IR的区别的认识诸如此类。
剩下的问题主要
问我对百度有多少了解,如果加入百度,你能给百度带来什么,又能从百度获得什么?
诸如此类……这次面谈大约进行了一小时,自我感觉相当好。
    第一个结束后等了几分钟,接下来是第二人面试,是百度的技术经理,上次她也来过
清华。这个问的问题就比较一般化了。比如“上大学对哪些课感兴趣,学得比较好”,还
有“你认为自己的优点是什么,缺点是什么?喜欢什么运动?”
等等。俺上大学其实没啥
特别感兴趣的课但为了防她问,就回答了数据结构和算法,果然她就考了俺这方面的东西
问知道几种排序算法,还问有几百万个高考成绩,应该怎么排序最快。这个俺开始没回
答对,幸好后来灵感一来,还是说对了,庆幸(汗……)。还有印象深刻的问题是问自己
认为最大的成功是什么,最大的失败是什么。俺回答最大的成功是考上清华计算机,接着
解释俺当年多么冲动、冒险,立下雄心壮志等等等等,最大的失败本来想说上大学这么多
年了,不但是个光光,连失恋的经历都没有(失暗恋不算啦)真是失败,但转念一想这会
不会给人留下不良印象,改口说成是研究生挂了从小到大唯一一门课(体育也不算啦)。
不过这个JJ还是打击了我一把(为什么JJ都喜欢以打击别人为乐?)说刚进百度不可能
给你做研究啦,都得从研发(其实是开发)做起啦,小公司很辛苦的啦,每天工作10几个
小时啊……为了offer,俺只好硬着头皮表示充分理解,并拍着胸脯保证说咱一向吃苦在
前,享乐在后,喜欢脚踏实地从基层做起……嗯,对了,她还问我希望三年后是什么样子。 这年头,谁还想那么远,现在是offer还没到手,谈什么将来啊,胡乱说了两句,结果被
JJ抓住马脚,狠拍了两转头。这个面试进行了45分钟,感觉一半好一半坏,不过留下的
希望还是很大地。
    第三个面试是人事经理面试我,那个大妈的英文名字俺没记住,谈得也不多,都是
些形式化的东西,待遇也一直不肯说个具体数,只说在业界属于中上等,具体和职位相关
又给俺介绍了一通他们公司的福利制度和待遇构成,主要有什么四险一金,商业保险,
奖金,项目奖金,年底分红,员工期权,活动经费等等,反正该有的一定都有,就是没有
具体数字
。剩下的就是等通知,大概5天内会给确切消息。这个面试进行了25分钟。出来
时看到了俺同学,一个实验室的,她做的是正宗IR,前阶段还参加TREC-11得了几个第一
看来今天下午就来俺们两个面试的了,最多不会超过三个人。

写给要去百度面试的兄弟
http://file.yingjiesheng.com/list/company/internet/baidu/2007/04/07/2974.html
第一次面试经过了3个小时,见了4位面试官,一个
系统构建师,一个team leader,一个技术部经理,还有一个hrJJ,主要问的问题
就是我曾经做过的信息检索项目,基本上照着简历(如果有的话)仔细地问,还会
出点题目考你,建议大家多去看看《数据结构》,尤其是算法分析、查找、排序
方面的东西。还有一些就看你的反应能力了,这里就不说了。
然后她会让你问一些问题,记得去之前到网上搜集点百度的资料看看,对百度有些
认识,然后再问写关于公司发展和个人发展的问题
,薪水的问题就别问题。
大约3个星期后,通知我去二面,又见了一个team leader和技术副总裁,这回还是
围绕着简历提问,但自由交流的成份很多,就看你的亲和力和素质了,总之让他认
为你这个人有创意,有想法,跟你一起合作会很愉快就是了。
百度的待遇一直不知道,工作时间大约是每天10小时以上,周六经常加班。
有股票期权,看你是不是喜欢了。
主要注意的是他让你问他问题的时候,一定问点有水平的问题,给他们点表现的机会,
它表现的很爽,一高兴,对你也有好处

度校园招聘在线笔试题解析--芯片测试
http://www.ideawu.net/ideablog/category1/article266.html
(30分)芯片测试:有2k块芯片,已知好芯片比坏芯片多.请设计算法从其中找出一片好芯片,说明你所用的比较次数上限.其中:好芯片和其它芯片比较时,能正确给出另一块芯片是好还是坏.坏芯片和其它芯片比较时,会随机的给出好或是坏。

百度面试经过(百度面试)
http://www.netfetch.cn/netfetch/article.asp?id=527
第一个面试官问了我关于一些论文的情况,我跟他解释了一些细节,后来在问了我一些关
于特征抽取的东
西,这个我答得不够好
-_-最后给我出了两个题,
一个:正向最大匹配分词,怎么做最快?
我不假思索就做了出来,呵呵,他惊诧了一下,然后问我以前是否做过,我说我以前见过
类似的题目,就是一个查字典的过程.
第二个:怎样在复杂的各种形式的网页中提取mp3下载的结构化数据,
我没有很好的思路,不过把自己的想法说了一通,利用domtree划块,他比较肯定我的思路
,然后说其实这个题目非常复杂,主要是考考我的思路,结果笑嘻嘻的走了

第二个面试官我认识,以前见过,主要是谈论文相关的知识,然后问了我对现在自然语言
一些相关技术的发展和难点等,
我说的他基本赞同,然后两个人都谈谈自己的兴趣爱好,
以后搜索发展的方向,比较投机,气氛非常好,基本上没有什么实质性的东西,他主动给
了我他的联系方式

第四个应该是一个pm吧,主要问我工程的东西,出了两个题,
第一个:有3个容器,第一个A升,第二个B升,第三个无穷大,水无穷,问我可以量哪些形
式的水装到C中,例如A升,例如A+B升等
我刚开始用集合的思想做,后来他提示了一下,最后我表示结果成一个kA+tB的线性组合,
他要我证明,我很快就用数学归纳法做了出来,
第二个,是在100w个数中找最大的前100个数,我这个题目上次讨论过,用小根堆加线性扫
描作,应该是比较快的,
看样子总的情况他比较满意,主动握手和我告别,说,还有最后一个,你随便跟她聊聊就

最后一个是个JJ,问了我一个linux的东西,我不会,然后问了一些排序的基本东西,我都
答出来了,又说我是数学系的本科,要看看我的推理逻辑能力,把那个微软的3升,5升,
量4升的题给我
做,以前见到过,但是没做过,不过当时一下就做出来了呵呵
最后一个题目我答得不好,
有10个文件,每个文件1G,
每个文件的每一行都存放的是用户的query,每个文件的query都可能重复
要我按照query的频度排序

这个题目答得挺差,第一,我不知道内存最大能使用多少,第二我不知道文件最大能存放
多少?
经过她提示后,
我说没什么思路,
她要我给一个解答结果
我说可以利用数据库的数据结构来做,

总共3个多小时,我只记下了我记得东部分东西,同时给应聘baidu的同学几点建议:
第一:熟悉数据结构和算法,特别是排序算法最好比较精通
第二:了解一些信息检索相关技术,发展方向等
第三:了解一些baidu文化
第四:熟悉linux

百度面试过程详解-附电话面试题    
http://blog.csdn.net/ysuncn/archive/2007/09/14/1785709.aspx
面试过程大概如下:

1、介绍一下项目。

2、提了一个问题:上千万条记录,统计出重复记录最多的前N条。

3、一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?

4、多个线程访问共享内存时因该怎么办?

5、在写程序遇到问题的时候,通常采用什么调试方法?

6、一个client/server的协议问题

7、剩下就是随便聊聊,比如有缺点、期望工作的性质、职业规划等

总结一下教训:

1、介绍项目的时候不能一味的按照事前想好的模板说,应该根据所申请的工作的性质,多说一些和自己申请的工作内内容相近的东西说。我在介绍我的项目的时候,说了很多硬件的东西,而相关的Linux下的C编程却没有提到多少,一大失败之处。

2、对于他提的第二个问题,当时因为紧张没有想出来,挂了电话以后才有了思路。

3、这个概率题以前碰到过,而且和同学们讨论过,答案很早就知道了。但是遇到面试的时候,不能马上就说出答案,因为这样摆明了高诉人家你以前就见过这道题,这样就失去了作为考题的意义。所以,如果事前知道答案也不要马上说出来,装作考虑中,然后慢慢说出答案。我就是很快就说出了答案,失败!


4、在问项目的时候,他问我代码行大概有多少?我说大概有5.6K行左右。在回答第四个问题的时候,我几乎是将书上所讲过的东西背了一遍给他,虽然答案是正确的,但是我估计他一听就听出来是在背书了,所以这也会减分不少。,而且百度强调创新,其实就算你不知道答案也可以按照自己的思路说一下的,只要逻辑清晰、合理都会比我背书强……

5、我的回答是有时候用gdb,有时候用输出日志的形式。以我之前给他讲的项目经验是不大可能会涉及这么多的知识的,所以估计他又听出我是在背书了……继续减分

6、后来我发现这个问题其实他不是在考我问题的答案,是考我解决问题的能力和考虑问题的思路。这点是我比较差的地方,没办法……减分

我前面表现那么失败,基本上已经没有什么希望了,后面的谈话已经没有意义了,只不过是礼貌性的结束这次面试了。

上面的总结是我收到拒信以后才总结出来的,还以为能被录取呢……

 

百度电话面试题目:
1.谈谈你对数据库中索引的理解
2.现在普通关系数据库用得数据结构是什么类型的数据结构
3.索引的优点和缺点
4.session和cache的区别是什么
5.如果有几千个session,怎么提高效率
6.session是存储在什么地方,以什么形式存储的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值