多贝云的一次笔试

​ 在年级的就业实习群里看到了多贝云的招聘,就顺手投了一波简历,然后有个小哥哥打电话给我说是它们会在华科开宣讲会,顺带有笔试的那种,于是就从地大走到华科去参加宣讲会了。。华科真的蛮大的。

​ 宣讲会是CTO来亲自给我们讲,感觉听不容易的。今天讲完晚上还得坐高铁赶到下一个城市。讲了多贝的做的一些事情,一些后台数据量,CTO希望一起共事的人的一些要求。我以为它们只是做在线教育的,但是CTO说是做在线教育的技术支持,也就是说提供一个平台,接入做在线教育的一些公司,为他们提供后面的网络等一些基础服务。有点像淘宝和上面的店家的区别。CTO提到的数据量也超级吓人的,说他们现在有1000多台服务器,每天产生150g的日志文件。那么多的服务器用阿里云之类的各种云?好像贵死吧。。?部署也是各种docker吧?加上微服务?当时听完这些数据第一感觉就是抱歉,我来错地方了。233

​ 在宣讲会完之后就是笔试了,笔试一共是10道题和一道附加题,所有人都是同一套试题。限时是一个小时,不过大部分人都是30分钟左右就起身离开了吧。。弄得俺也心慌慌的,快到九点半的时候就交卷了,毕竟还得走回地大呢。题目有些记得不是那么清楚,但是尽量回忆吧。

1.什么是死锁,怎么避免死锁

​ 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁的预防可以使用银行家算法或者有序资源分配法。

2.介绍一下堆和栈,有何区别

​ 程序的栈区存放程序函数的参数值和局部变量值,由程序自动释放。堆区有程序员分配和释放。

3.写出你认识的http methods,并说明使用场景

​ get,请求一个数据

​ post,向服务器提交一个数据

​ put,向服务器提交一个数据更新它

​ delete,删除指定的资源

​ patch,对资源的部分修改

4.编写一个函数,给定一个无序数组和一个数字,返回数字在数组中的下标

​ 遍历,搜索到就返回下标

5.要求如上题,但是数组为有序的

​ 二分查找

6.有一个10G的文本文件,但是机器内存只有1G,要求根据字母排序,写出排序的思路和方法。

​ 我写的是根据首字母分为26个部分,倘若每个字母部分仍大于1g则使用第二个字母划分。这样保证每部分小于1g的容量再排序,排序完成后根据26个字母的顺序组合。

7.若一条线路的TCP丢包率为10%,问其改进的方法?(这题我不会,也花时间)

8.你了解什么设计模式,简单介绍一下

​ 单例模式,类负责创建自己的对象,保证只有单个对象被创建。

​ 工厂模式,使用一个类统一创建其他类的对象。

​ 装饰器模式,允许向现有的对象添加新的功能同时又不改变其结构。

9.你了解过什么语言,各有什么优势和缺点。

​ C++,静态语言,快,没有自动的内存回收,同时允许程序员申请内存空间和得自己处理内存释放。是优点同时也是缺点。

​ Python,动态语言。运行速度相交其他语言会慢,但是有各种语法糖能够快捷开发。

​ Java,第一影响就是万物介对象,各种库,冗长的代码,各种设计模式。

附加题是设计一个长连接转换短连接的后端。有五个问题。

怎么一一对应,

​ 通过通过0~9, a~z, A~Z表示已给62进制的数,通过自增来给每一个长连接分配一个数字,数字即为短连接。

怎么避免碰撞,

数据库怎么设计,

​ id ShortUrl LongUrl CREATETIME UPDATETIME

有什么改进的方法,

​ 使用redis数据库缓存热点数据。

分布式的话会有什么问题

​ 数据库之间的同步?

当时看到周围人都走了看时间也差不多了就急急忙忙的交了。九点20出来到宿舍正好10点钟。不知怎么的一股惆怅。