在年级的就业实习群里看到了多贝云的招聘,就顺手投了一波简历,然后有个小哥哥打电话给我说是它们会在华科开宣讲会,顺带有笔试的那种,于是就从地大走到华科去参加宣讲会了。。华科真的蛮大的。
宣讲会是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点钟。不知怎么的一股惆怅。