百度 提前批C++ 一面 二面 三面

【每日一语】当你厌恶你身边的人,你表达厌恶最好的方式不是和他们争吵,而是自己勤快点儿,加把劲离开他们。那样,他们就永远从你的生活中消失,和死了差不多。

前言:

个人介绍: 985小硕,c++后台,鹅厂实习生。

百度一面 电话面 (87分钟)

按照以往的套路,我都是自我介绍完直接说自己的项目,因为自己的项目已经很熟悉了。就算问到一些不会的也能答出一二三。可一面面试官完全不按照套路。我准备说项目的时候直接打断了。说我们先问几个问题,等会再说项目。

虚基类

纯虚函数

虚函数

虚函数表内存分布

虚函数中虚基类和派生类的关系

显示转换

问了三个算法题  讲讲思路

学过网络和操作系统吗

三次握手,四次挥手  握手为什么是两次

讲一讲拥塞机制 和流量机制

http https  抓包工具原理

IP地址分为几类?简单说一下分类

进程通信有哪些方式

进程同步的方法

知道互斥锁吗?

他用什么来保证共享数据的安全性?

这个我说信号量,他说如果用信号量来解决,现在出现一个状况,两段进程都被标记为可以访问该共享数据,但我们的共享单元只能支撑一个进程访问。这时候怎么办?

我说用唯一标识符去处理。生成唯一标识符,这样就不会出现这种情况。

他说不对。让我回去好好看看。

回去查了一下,是原子操作。。

(这个问题问了好久)

数据库索引 索引原理  以及如何优化数据库

开始讲项目  三个项目,本科的,硕士的,以及在鹅厂的。问鹅厂的问的最细(40 min)

一面总结: 还有很多问题都忘记,面完的感觉就是,百度问的真的很全,第一次电话面超过一个小时的。不够面试官也没有在不会的问题继续难为我,我就说不会。他说没事就下一个问题了。

百度二面  电话面 25分钟

为什么继承时基类的析构一般声明为虚函数?

虚函数与纯虚函数的区别在于

为什么构造函数不能够使虚函数

4.TCP端口扫描方式

5.TIME_WAIT、CLOSE_WAIT

6.守护进程

7.迭代器的++it和it++哪个好

8.开始问项目,从百度二面开始。我的项目就一直被怼,完全吹不动。说几个核心的点。

9.因为说了tars 的源码,他就基于这个源码开始问。如何去处理高并发HTTP请求?

我: 从接入层(统一接入网关,负载均衡)…..从服务层(服务细分,过载保护)…..从存储层(cache,共享内存,分布式存储组件ceph)……

在服务层回答到 过载保护的时候。被打断。 他说你说的过载保护不过是在请求很多的时候去拒绝掉一部分用户。或者延时处理。那么 现在如果出现一个热点事件,百度的搜索可能会达到数十亿次,你去拒绝掉这一部分用户。那这一部分用户的用户体验怎么保证?

在存储层回答ceph 分布式存储组件的时候 被问到了映射  为什么ceph要去做三层映射?

面试官: 你有没有考虑过流量不干净的情况怎么办? 用很简单的ddos攻击,你这个服务 我1分钟之内就能让他趴下。这个你考虑过吗?

面试官: 你这个底层本质上还是用队列做的。你有没有考虑过队列全满的情况?就是现在你的所有队列全部爆满,你根本没有办法去做请求迁移。这时候怎么处理?

虽然只面了25分钟,但是大概率知道自己过了。因为最后面试官说:你有什么问题吗。我觉得你OK。 我就问了关于他们团队的一些问题。

二面之后的三天,HR打电话过来约视频面,并说明视频面面完之后可能还要加一轮现场面。我说没问题。 后来又打电话过来,说面试官不同意视频和电话面。必须现场面。而且不报销任何路费。从深圳到北京 来回花了3000多。最后拒了。很伤很伤。

百度三面  现场面  70分钟。

从面试开始,我就没有想过会出现这种情况。

就是自己讲完腾讯的实习项目之后。面试官直接说。你这个项目是谁让你做的。你有没有质疑过,你这个项目从方案和逻辑上就是错的?

我 : …………………………..  (从这开始心里就有一些慌了。)

面试官:我们现在假设一种情况,就是我们的服务端是很安全的,你现在多一个第三方代理,我怎么信任你这个第三方代理?

我:我们这个服务是对内的。即使对外,我们也可以从请求上来判定。比如相同的IP的地址我们可以从频率上去限制他的请求。不同的IP地址 我们可以去从key(这个key 是有一个失效期,只能用一次,我们将这些不干净的流量尽量拦截在接入层,不让他进入我们的网关。)

面试官: 你可能理解错了我的意思,我的意思是,限制服务端去信任客户端。你凭空多出了一个第三方代理,虽然原则上确实方便了客户端的使用,但安全性怎么去保证?

我: 我们可以去做加密。Balabalabalalalalal……………

面试官: 你的意思我懂,但高并发请求如何去处理呢?

我: 从接入层(统一接入网关,负载均衡)…..从服务层(服务细分,过载保护)…..从存储层(cache,共享内存,分布式存储组件ceph)……没讲完就被打断了。

面试官: 你知不知道,你现在所做的可能都是没有意义的?

我: ………………………….

面试官:因为你们的服务端,绝对已经做过了这些处理。而且比你的第三方代理做的好。你现在的这个代理服务极其脆弱。你为什么不把他封装成一个接口呢?而不是一个服务。

我: …………………………………………

面试官: 你这个项目其实还是有很多有意思的东西,比如你知道为什么用appid和appsecret 去换取微信那边的一个access_token权限吗?

我:我们可以类比,淘宝登陆 除了用户名和密码 我们还需要手机验证码这样的方式。

面试官: 你这个类比不对,因为淘宝登陆他现在不信任你这个用户名和密码。需要多加一个验证方式。而通过appid appsecret 他的本质是换取 而不是加

你知道为什么要换取 ,而不是加吗?为什么要这样做。而不是把appid appsecret 存到数据库里面?

我:因为存到数据库里面,不够安全。只要是存在数据库里面的密钥。都可能有被攻破的风险。而access_token是实时生成的。

面试官: 咱们又绕回来了,那你做这个第三方代理的时候为什么用的是数据库?你既然知道access_token是实时生成的,那么就应该知道这个客户端令牌从原则上是不允许被其他人知道的,更不允许存到数据库里面。那咱们换一个问题。还是刚才,那咱们现在假设我们的服务端和数据库原则上是安全的,那么现在还是要用access_token去换取?我现在可以直接把appid和appsecret直接串起来串成一个字符串然后md5加密一下。可以这样做吗?如果不可以说出理由。

我:到这里我就懵逼了。。。。。

面试官:好,你现在去做代理服务器。去请求另一个接口。如何去提高他的性能?

我:去做那边接口的服务细分,每个接口去细分,再在存储层去做一些优化……………….

面试官:现在假设不允许你动那个接口呢。比如你现在去请求一个其他公司的接口,他就是慢。他那边代码写的就是很不好。你只可以动你的代理层。怎么处理?

我:多线程,分发,缓存,cdn.

面试官就照着我回答的继续细问下去。。又懵了。

后来就没问什么问题了。问了几个简单的就结束了。

总结:

三面面试官,绝对是我面到现在技术最强的一个。虽然挂了,但是面试官人很nice  指出了项目很多我都没有考虑到的问题。面试全程都在引导我去回答问题。就是不报销路费太伤了。。。从各大博客和在百度实习的同学了解到,百度的技术氛围真的很赞。秋招再努力了。与大家共勉。

点击作者姓名与作者大佬交流~

作者:C+++++++++

来源:牛客网(www.nowcoder.com)

– 互联网名企笔试真题

– 校招求职笔经&面经

– 程序员/产品/运营求职实习信息

– 程序员/产品/运营学习交流社区

    原文作者:牛客网
    原文地址: https://www.jianshu.com/p/5355874901bc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞