zoukankan      html  css  js  c++  java
  • 百度面试总结

    很幸运的拿到百度的面试机会。今天第二面面完后,估计二面没戏了。这里大概总结下百度面试的风格。

    9月20号一面

    一面上来先让你介绍项目,还好之前准备了一下。在项目的基础上又添油加醋了一些东西,使项目看上去更专业一点。

    我大概介绍了下项目,我提到项目用到了多线程,他就问我这个多线程访问缓冲区是怎么实现的。有哪些类和接口,这些

    类和接口是干什么的。说完之后,他问我tcp协议如何建立一个连接,这个当然没问题了,三次握手。他又问那浏览器

    和服务器通信的全过程是什么,我回答了tcp协议的工作流程,面试官说不是介绍tcp协议。我有点蒙,然后随便说了

    点服务器在80端口监听,浏览器向服务器发送数据,服务器返回数据给浏览器。面试官又问那你的项目用到了多线程,那么

    线程池是如何工作的?一开始没理解他意思,他后来稍微提示了下,我才明白他要问的是线程池的线程重用。他又问,那么,

    请你类比线程池,连接池,文件池。我有点蒙,表示没听过什么是连接池,然后灵机一动是不是http的keep-alive机制。面试官

    说,那你说说什么事http的keep-alive。后来回去查资料才知道连接池是数据库中的概念。然后面试官又问如何判断链表中

    是否有环,这个题我已经烂熟于心了,我假装第一次碰到这个题,装逼想了会,说快慢指针。尼玛面试官一眼看穿,直接pass不再问了。

    然后,面试官说,那你这个项目客户端访问服务器的访问量比较小,那如果现在有个应用,可能一天有一亿的访问量,你如何降低

    这个服务器的响应延迟。我想了下,可以用hadoop,面试官说,你写过hadoop的代码吗?我说写过一点,他说,那你介绍下什么

    是hadoop,他是怎么运作的。我大概说了下,他说那你不用hadoop怎么解决这个问题。我又想了个转发访问的方法,就是假设有6台

    服务器,A,B1,B2,B3,B4,B5。那么A接受用户的请求,A再把请求转发给B组服务器中的某一个,由他们进行处理。面试官问,

    那现在假设有1t的数据,分别存储在b1-b5上,每个存200M,现在有个请求过来后,发现数据分别在B1,B2,B3上。B1,B2,B3分别响应一个

    文件分片,part1,part2,part3,你如何将这三个分片合成一个?我又蒙了,交流了下才明白他是想问排序。他又把问题简化成假设有100个

    长度为2048的文件分片,你如何按顺序把这100个文件组合成一个新的文件。他给了我提示之后,我想到现在B组的服务器上对数据进行堆排序,

    这样服务器A拿到3个已经组织成堆的数据,A只要不断输出堆中的元素就行了。他说,那行,你写下堆排序的代码。如何把一个数组组织成一个堆,

    如何在堆中插入一个元素。妈的,还好这块我比较熟,也大概写出来了。面到这里,一面就结束了,一面大概面了一个小时。

    9月22号二面

    收到二面的通知我是有点惊讶的,因为自觉一面面的一般。一上来,面试官就感觉和一面的不是一个风格,一面的面试官一看就是工作没几年的,

    还带着些许学生的稚气。二面的面试官不太像个搞IT的,扎个小辫子,手腕缠着佛珠,头发也有些许花白,感觉像个搞艺术的。应该是个资深员工。

    一上来依旧是问项目,和一面不同,他特别关心数据库的实现,详细的问我数据库的组织结构。有哪些表,表里有哪些字段,这些字段是什么

    功能。由于是添油加醋,说的磕磕绊绊的。然后他问了三个问题,第一,你们如何处理书籍丢失,就是扫了一圈,有本书没了,怎么处理的。

    我,额,系统没考虑到这个问题。第二,你们如何同步学校服务器和本地服务器之间的数据,额,没同步。第三,你们有两个服务器,一个是

    学校的,一个是你们自己的,假如现在有个学生借书,这个请求发送到学校的服务器,学校的服务器执行成功了,把钱扣了。那然后再访问本地的

    服务器,结果失败了,那怎么处理这个问题。我想了下,瞎说了个回滚,面试官说不可以。我又瞎说了个说给事务编号。妈的,这里面的一坨屎。

    然后估计面试官也受不了了,他开始问跟项目没关系的东西。他问,浏览器如何访问服务器,这个问题一面遇到过,我答的还行。然后问http协议

    有哪些状态码,这个也看过,介绍了200-500,但是他问了个那100是什么意思,我他妈瞎了,不知道。然后问http协议有哪些方法啊,还好这个

    前一天晚上看了,又问post和get的区别。又问操作系统的虚拟内存是什么意思,尼玛这考研内容,但是有点忘了,还好说了个大概。他问虚拟内存

    存在什么地方,我有点蒙,什么意思,突然想到操作系统把内核分为内核空间和用户空间,所以答虚拟内存用的是用户空间,他又问还有可能存在什么

    地方,我说可能存在硬盘里。然后又问线程之间如何通信,进程之间如何通信。我答的不好,随便瞎说了点。然后问进程和线程有什么区别,进程如何

    调用系统服务,我说linux里请求个标志位,是多少忘了,你妈当时0x80已经在嘴边了没说,后来一查就是int 0x80请求系统服务。他问,你用过linux啊

    那你说说你用过哪些linux的命令,我说mount,top,contrab。然后问java里有哪些容器啊,我说,hashtable,hashmap,arraylist,linkedlist。

    他说,那你说说hashmap和hashtable的区别。我一开始把hashtable和hashset搞混了,然后说了个hashmap是用来替代hashtable的,最后想起来

    hashtable是线程安全的。然后他又问那哈希表有哪些处理冲突的办法啊,我说了几个常见的,提到了再哈希,他问,如果一个hash(hash(key))==hash(key)

    怎么办,我说那遇到这种情况就线性探测。然后我又提到了公共空间法,他问这个公共空间是怎么实现的,我说最简单的用个数组,复杂点的用棵二叉查找树。

    他问二叉查找树如何删除一个节点,让我写代码。我刚写2分钟,他说没时间了,让我说下思路。我大概说了下,他又问红黑树用于什么场景,我蒙了,

    都知道红黑树的树结构,但是没想过用于什么场景啊。然后面试就结束了

    总体来说,百度的面试官还是很nice的,如果你不会,他会给你很多提示,而且百度一个很大的特点就是,他的面试经常是给你一个场景,然后从这个场景中

    引申出很多的问题。面试的问题也很活,你说到哪,他问到哪。还是和以前的面试有些区别。二面面的不好,估计挂了。在此分享出来这个面试经历,希望

    大家能从中得到一些信息。

  • 相关阅读:
    (转)【web前端培训之前后端的配合(中)】继续昨日的故事
    ural(Timus) 1136. Parliament
    scau Josephus Problem
    ACMICPC Live Archive 6204 Poker End Games
    uva 10391 Compound Words
    ACMICPC Live Archive 3222 Joke with Turtles
    uva 10132 File Fragmentation
    uva 270 Lining Up
    【转】各种字符串哈希函数比较
    uva 10905 Children's Game
  • 原文地址:https://www.cnblogs.com/elnino/p/5895891.html
Copyright © 2011-2022 走看看