【每日一语】当你厌恶你身边的人,你表达厌恶最好的方式不是和他们争吵,而是自己勤快点儿,加把劲离开他们。那样,他们就永远从你的生活中消失,和死了差不多。
前言:
个人介绍: 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)
– 互联网名企笔试真题
– 校招求职笔经&面经
– 程序员/产品/运营求职实习信息
– 程序员/产品/运营学习交流社区