阅文集团实现电面

阅文集团

这次是周一下午2点,面试官很准时。

他:你现在是大三在校生是吧?

我:嗯是的,我现在大三在读。

他:那你实习是怎么安排的?是1月到6月吗?

我:不是的,1月到6月我大三下学期还有课,可以是这个寒假或者明年的暑假。

他:是这样的的,我们公司是想招实习时间长一点的,不然你只实习一两个月对于公司来说培养成本较高,因为可能你刚一熟悉就走了。

我:哦,这样啊,可能我投简历的时候没有注意到招聘标准(心想可能凉了吧)。

他:哦,好的,那我们简单聊下好吧。(这是我没有想到的)我看了你的简历,上面写着你现在在黄石创意网络科技有限公司,这个是?

我:哦,那是我们学校实验室的一个孵化公司。

他:哦,那你能说一下你在里面做什么工作吗?

我:后台研发。(这就完了?怎么这么不会聊天,可能我也是觉得没什么希望吧)

他:额,能说一下具体做哪些事吗?

我:主要是参加一下创业型的比赛,比如互联网+、挑战杯什么的……

他:我看你简历里的数据结构和算法提到了一致性哈希,它是怎样一个过程?

我:额,就是解决分布式环境下的数据存储问题,每个数据进行哈希然后存储到各个机器上,已知性哈希就是保证这些机器负载均衡。

他:你能跟我说说它和哈希结果对10取模有什么区别吗?(这个题的正确答案在一个多月之前我还听左神讲过,无奈临时抱佛脚记不太清了)

我:(我有些答非所问了)就是利用哈希的散列特性,比如在机器的id后做个处理,比如id-0~id-10,然后虚拟节点多了之后就会均匀分布。(我这说的啥啊,正确答案应该是如果增加或删除机器时(N变化)代价会很高,所有的数据都不得不根据id重新计算一遍哈希值,并将哈希值对新的机器数进行取模。然后进行大规模的数据迁移。为了解决这些问题引入一致性哈希,我们假设数据的id通过哈希函数转换成的哈希值范围是2^32,也就是0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,想象成一个闭合的环形,那么一个数据id在计算出哈希值之后认为对应到环中的一个位置上机器在环中的位置根据机器id(主机名或者主机IP,是主机唯一的就行)设计算出的哈希值对2^32取模对应到环上。那么一条数据如何确定归属哪台机器呢?我们可以在该数据对应环上的位置顺时针寻找离该位置最近的机器,将数据归属于该机器上……博客zhenganwen.top我还亲自总结了)

他:我看到你的简历里算法提到了堆排序,这是一种什么排序策略?

我:就是一棵二叉树,比如大根堆,它的每棵子树的最大值就是其根节点,然后主要有两种核心的操作就是弹出堆顶元素和调整树结构,因为每一次弹出的堆顶元素一定是结构现有数据的最大值,而每次弹出之后都会重新调整为大根堆,所以能够形成一个有序序列。(其实堆排序并不是利用二叉树,而是利用二叉树和数组下标的对应关系想象成一棵二叉树)

他:我看到简历里提到了Elasticsearch,你在项目中有用到过吗

我:有的,就是有一次项目中需要一个搜索引擎,我之前学电商项目的时候都是学的solr,然后这个项目我用的是SpringBoot,需要SpringDataSolr做一个集成,发现solr不仅配置麻烦,并且版本直接的API差异较大,而且我熟练的是solrj,于是我就换成了Elasicsearch,发现比较简单,功能也强大。

他:你的简历里还提到了子模块间解耦,通过HTTP REFTFUL通信,你能和我说一下这个RESTFUL是什么吗

我:就是一种风格,应用在项目中就是请求的url符合 /根目录/项目模块名/增删改查对应的动作/id这样一种风格(漏了请求方式)。

他:那这个有什么好处呢?

我:就是能够实现先后端并行开发吧,我觉得,大家如果都按照这个约定,都按这种接口定义方式,前端开发前端的,后端开发后端的,最后也能做到无缝对接。

他:数据库mysql,你有用到过吗?

我:有的,我项目一般都是用的mysql

他:那你有了解过索引吗?(我发现这个是高频考点)

我:额,知道索引,但没有了解过。

他:看你简历提到了redis,那redis中有哪几种数据结构?

我:单一值结构(其实就是键值),键值结构(其实应该说哈希),集合、有序集合,四五种吧

他:那redis中有序集合SortedSet的实现你有了解过吗?

我:是指Java中的SortedSet吗?

他:那Java中有什么结构是有序集合?

我:SortedSet吧……

他:如果让你来实现这样一种高效插入、查找的有序集合,你会怎么做

我:我觉得对应一种数据结构吧,是什么来着……额……,就是一种数据结构,它的任意棵子树的头结点数值大于左子树的小于右子树的(没想起来是二叉搜索树,好笨),然后这样的话插入和查找的效率都是log(2,N)了

他:我这边没有什么想问的了,你有什么想问我的吗?

我:额……就是如果我想进贵公司实习的话,还有那些方面需要提升?

他:啊,其实我觉得你技术水平还可以了,知道的东西还挺多的,然后但是我们这边有一点就是需要实习周期到达5个月半年这样,一两个月的话你可能也就刚刚知道是怎么回事然后就结束了这个对对对于我们来说也是一种成本成为很高的

我:哦,好吧(知道是彻底没谱了)

#阅文集团##实习##面经##Java工程师#
全部评论
楼主很厉害啊,前途无可限量啊
2 回复
分享
发布于 2018-12-17 20:19
跳表挺喜欢问的
1 回复
分享
发布于 2018-12-17 16:07
联想
校招火热招聘中
官网直投
刚面了阅文。。。问的都不难,让我等通知🙃
点赞 回复
分享
发布于 2018-12-18 15:20

相关推荐

2 26 评论
分享
牛客网
牛客企业服务