当前位置:首页 » 网页前端 » 京东面试题前端
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

京东面试题前端

发布时间: 2022-09-05 13:08:39

① 京东面试题:ElasticSearch深度分页解决方案

Elasticsearch 是一个实时的分布式搜索与分析引擎,在使用过程中,有一些典型的使用场景,比如分页、遍历等。

在使用关系型数据库中,我们被告知要注意甚至被明确禁止使用深度分页,同理,在 Elasticsearch 中,也应该尽量避免使用深度分页。

这篇文章主要介绍 Elasticsearch 中分页相关内容!

在ES中,分页查询默认返回最顶端的10条匹配hits。

如果需要分页,需要使用from和size参数。

一个基本的ES查询语句是这样的:

上面的查询表示从搜索结果中取第100条开始的10条数据。

“那么,这个查询语句在ES集群内部是怎么执行的呢?”

在ES中,搜索一般包括两个阶段,query 和 fetch 阶段,可以简单的理解,query 阶段确定要取哪些doc,fetch 阶段取出具体的 doc。

如上图所示,描述了一次搜索请求的 query 阶段:·

在上面的例子中,coordinating node 拿到 (from + size) * 6 条数据,然后合并并排序后选择前面的 from + size 条数据存到优先级队列,以便 fetch 阶段使用。

另外,各个分片返回给 coordinating node 的数据用于选出前 from + size 条数据,所以,只需要返回唯一标记 doc 的 _id 以及用于排序的 _score 即可,这样也可以保证返回的数据量足够小。

coordinating node 计算好自己的优先级队列后,query 阶段结束,进入 fetch 阶段。

query 阶段知道了要取哪些数据,但是并没有取具体的数据,这就是 fetch 阶段要做的。

上图展示了 fetch 过程:

coordinating node 的优先级队列里有 from + size 个 _doc _id ,但是,在 fetch 阶段,并不需要取回所有数据,在上面的例子中,前100条数据是不需要取的,只需要取优先级队列里的第101到110条数据即可。

需要取的数据可能在不同分片,也可能在同一分片,coordinating node 使用 “multi-get” 来避免多次去同一分片取数据,从而提高性能。

“这种方式请求深度分页是有问题的:”

我们可以假设在一个有 5 个主分片的索引中搜索。当我们请求结果的第一页(结果从 1 到 10 ),每一个分片产生前 10 的结果,并且返回给 协调节点 ,协调节点对 50 个结果排序得到全部结果的前 10 个。

现在假设我们请求第 1000 页—结果从 10001 到 10010 。所有都以相同的方式工作除了每个分片不得不产生前10010个结果以外。然后协调节点对全部 50050 个结果排序最后丢弃掉这些结果中的 50040 个结果。

“对结果排序的成本随分页的深度成指数上升。”

“注意1:”

size的大小不能超过 index.max_result_window 这个参数的设置,默认为10000。

如果搜索size大于10000,需要设置 index.max_result_window 参数

“注意2:”

_doc 将在未来的版本移除,详见:

Elasticsearch 的From/Size方式提供了分页的功能,同时,也有相应的限制。

举个例子,一个索引,有10亿数据,分10个 shards,然后,一个搜索请求,from=1000000,size=100,这时候,会带来严重的性能问题:CPU,内存,IO,网络带宽。

在 query 阶段,每个shards需要返回 1000100 条数据给 coordinating node,而 coordinating node 需要接收 10 * 1000 ,100 条数据,即使每条数据只有 _doc _id 和 _score ,这数据量也很大了?

“在另一方面,我们意识到,这种深度分页的请求并不合理,因为我们是很少人为的看很后面的请求的,在很多的业务场景中,都直接限制分页,比如只能看前100页。”

比如,有1千万粉丝的微信大V,要给所有粉丝群发消息,或者给某省粉丝群发,这时候就需要取得所有符合条件的粉丝,而最容易想到的就是利用 from + size 来实现,不过,这个是不现实的,这时,可以采用 Elasticsearch 提供的其他方式来实现遍历。

深度分页问题大致可以分为两类:

“下面介绍几个官方提供的深度分页方法”

我们可以把scroll理解为关系型数据库里的cursor,因此,scroll并不适合用来做实时搜索,而更适合用于后台批处理任务,比如群发。

这个分页的用法, “不是为了实时查询数据” ,而是为了 “一次性查询大量的数据(甚至是全部的数据” )。

因为这个scroll相当于维护了一份当前索引段的快照信息,这个快照信息是你执行这个scroll查询时的快照。在这个查询后的任何新索引进来的数据,都不会在这个快照中查询到。

但是它相对于from和size,不是查询所有数据然后剔除不要的部分,而是记录一个读取的位置,保证下一次快速继续读取。

不考虑排序的时候,可以结合 SearchType.SCAN 使用。

scroll可以分为初始化和遍历两部,初始化时将 “所有符合搜索条件的搜索结果缓存起来(注意,这里只是缓存的doc_id,而并不是真的缓存了所有的文档数据,取数据是在fetch阶段完成的)” ,可以想象成快照。

在遍历时,从这个快照里取数据,也就是说,在初始化后,对索引插入、删除、更新数据都不会影响遍历结果。

“基本使用”

初始化指明 index 和 type,然后,加上参数 scroll,表示暂存搜索结果的时间,其它就像一个普通的search请求一样。

会返回一个 _scroll_id , _scroll_id 用来下次取数据用。

“遍历”

这里的 scroll_id 即 上一次遍历取回的 _scroll_id 或者是初始化返回的 _scroll_id ,同样的,需要带 scroll 参数。

重复这一步骤,直到返回的数据为空,即遍历完成。

“注意,每次都要传参数 scroll,刷新搜索结果的缓存时间” 。另外, “不需要指定 index 和 type”

设置scroll的时候,需要使搜索结果缓存到下一次遍历完成, “同时,也不能太长,毕竟空间有限。”

“优缺点”

缺点:

“优点:”

适用于非实时处理大量数据的情况,比如要进行数据迁移或者索引变更之类的。

ES提供了scroll scan方式进一步提高遍历性能,但是scroll scan不支持排序,因此scroll scan适合不需要排序的场景

“基本使用”

Scroll Scan 的遍历与普通 Scroll 一样,初始化存在一点差别。

需要指明参数:

“Scroll Scan与Scroll的区别”

如果你数据量很大,用Scroll遍历数据那确实是接受不了,现在Scroll接口可以并发来进行数据遍历了。

每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,比用Scroll遍历要快很多倍。

上边的示例可以单独请求两块数据,最终五块数据合并的结果与直接scroll scan相同。

其中max是分块数,id是第几块。

Search_after 是 ES 5 新引入的一种分页查询机制,其原理几乎就是和scroll一样,因此代码也几乎是一样的。

“基本使用:”

第一步:

返回出的结果信息 :

上面的请求会为每一个文档返回一个包含sort排序值的数组。

这些sort排序值可以被用于 search_after 参数里以便抓取下一页的数据。

比如,我们可以使用最后的一个文档的sort排序值,将它传递给 search_after 参数:

若我们想接着上次读取的结果进行读取下一页数据,第二次查询在第一次查询时的语句基础上添加 search_after ,并指明从哪个数据后开始读取。

“基本原理”

es维护一个实时游标,它以上一次查询的最后一条记录为游标,方便对下一页的查询,它是一个无状态的查询,因此每次查询的都是最新的数据。

由于它采用记录作为游标,因此 “SearchAfter要求doc中至少有一条全局唯一变量(每个文档具有一个唯一值的字段应该用作排序规范)”

“优缺点”

“优点:”

“缺点:”

SEARCH_AFTER 不是自由跳转到任意页面的解决方案,而是并行滚动多个查询的解决方案。

分页方式性能优点缺点场景 from + size低灵活性好,实现简单深度分页问题数据量比较小,能容忍深度分页问题 scroll中解决了深度分页问题无法反应数据的实时性(快照版本)维护成本高,需要维护一个 scroll_id海量数据的导出需要查询海量结果集的数据 search_after高性能最好不存在深度分页问题能够反映数据的实时变更实现复杂,需要有一个全局唯一的字段连续分页的实现会比较复杂,因为每一次查询都需要上次查询的结果,它不适用于大幅度跳页查询海量数据的分页

参照:https://www.elastic.co/guide/en/elasticsearch/reference/master/paginate-search-results.html#scroll-search-results

在 7.* 版本中,ES官方不再推荐使用Scroll方法来进行深分页,而是推荐使用带PIT的 search_after 来进行查询;

从 7.* 版本开始,您可以使用 SEARCH_AFTER 参数通过上一页中的一组排序值检索下一页命中。

使用 SEARCH_AFTER 需要多个具有相同查询和排序值的搜索请求。

如果这些请求之间发生刷新,则结果的顺序可能会更改,从而导致页面之间的结果不一致。

为防止出现这种情况,您可以创建一个时间点(PIT)来在搜索过程中保留当前索引状态。

在搜索请求中指定PIT:

分别分页获取 1 - 10 , 49000 - 49010 , 99000 - 99010 范围各10条数据(前提10w条),性能大致是这样:

对于向前翻页,ES中没有相应API,但是根据官方说法(https://github.com/elastic/elasticsearch/issues/29449),ES中的向前翻页问题可以通过翻转排序方式来实现即:

Scroll和 search_after 原理基本相同,他们都采用了游标的方式来进行深分页。

这种方式虽然能够一定程度上解决深分页问题。但是,它们并不是深分页问题的终极解决方案,深分页问题 “必须避免!!”

对于Scroll,无可避免的要维护 scroll_id 和 历史 快照,并且,还必须保证 scroll_id 的存活时间,这对服务器是一个巨大的负荷。

对于 Search_After ,如果允许用户大幅度跳转页面,会导致短时间内频繁的搜索动作,这样的效率非常低下,这也会增加服务器的负荷,同时,在查询过程中,索引的增删改会导致查询数据不一致或者排序变化,造成结果不准确。

Search_After 本身就是一种业务折中方案,它不允许指定跳转到页面,而只提供下一页的功能。

Scroll默认你会在后续将所有符合条件的数据都取出来,所以,它只是搜索到了所有的符合条件的 doc_id (这也是为什么官方推荐用 doc_id 进行排序,因为本身缓存的就是 doc_id ,如果用其他字段排序会增加查询量),并将它们排序后保存在协调节点(coordinate node),但是并没有将所有数据进行fetch,而是每次scroll,读取size个文档,并返回此次读取的最后一个文档以及上下文状态,用以告知下一次需要从哪个shard的哪个文档之后开始读取。

这也是为什么官方不推荐scroll用来给用户进行实时的分页查询,而是适合于大批量的拉取数据,因为它从设计上就不是为了实时读取数据而设计的。

② 请问京东面试什么笔试考什么 会不会不通过 今天收到的信息京东客服面试:京东顾问岗位。需携带本

常见面试问题:你最大的优缺点。对加班的看法。你的职业规划

③ 京东管培生面试问题

我有朋友参加过,他上次参加面试具体的步骤及相关的面试内容如下:1,入场就坐:参加的是在上海的面试,面试的场所应该是京东的一个会议室。进去后有两个面试官,一男一女。每个人都有一个编号,就坐后听面试官简单的介绍面试说明。2,阅读材料:给5分钟阅读材料,并完成相应的记录。我朋友小组拿到的材料是关于京东目前所面临的各种问题,然后要求我们选取其中的5个问题,并且给出排序,最后是给出应对方案。3,自由讨论:自由讨论时小组成员中除了Leader/Time keeper两个人的分工比较明确外,其他人都应该算是Idea贡献者。我朋友后来发现小组通过一面的人还是蛮多的。我认为无领导小组,最重要的还是参与度,因为贡献度真的不好衡量,所以积极的参与讨论是关键,通过的可能性大。4,代表总结发言:这个总结发言人是我们小组成员推选的,我朋友小组有个人表现特别明显的就是个Leader,最后选的总结人也是他。我朋友反馈说那个同学说话挺快的,讲的内容虽然比较多,但我认为他讲的不是很有条理。5,最后提问环节:每个小组在讨论后都会被问不同的问题,小组被问到的问题是:你认为自己较为擅长的角色是什么?并且说明理由。面试官说完后,就按照顺序作答,每人1分钟左右的时间可以阐述观点。

④ 据说京东的员工每天的工作时间18h,经常加班,这个是真的吗

不加班的互联网公司可谓少之又少,特别是在国内竞争如此激烈的环境里。有一名京东的员工就在网络上疯狂吐槽部门加班太猛,称自己感觉有点扛不住了。

看样子没有最苦,只有更苦。这名京东员工晒出的加班记录在互联网行业里都排不上号,最多就算个正常加班。不知道各位读者朋友中有没有在互联网行业从事的?可以说说你们对于加班的看法。

⑤ 京东商城的管培生笔试考什么

行政能力测试、英语测试和专业测试

行政能力测试就是和公务员考试一样,考察基本的智商以及思考能力。英语测试是基本的英语试卷,难度较低,而专业测试是针对填报的岗位类型,会有相应的专业知识考察。

人才选拔是双向考核,京东的校招一年招两次,一次招半年。京东的春天进行实习生招聘,两次招聘针对的是同一年毕业的学生。对专业的考查是经过京东专家命题组审题通过,是专业类的笔试。

(5)京东面试题前端扩展阅读:

管培生专业初试和复试,会问到相关专业知识,程序员可能会让写一些小代码。面试准备要基于自己对面试岗位的看法,要做好功课。对于公司和业务的想法,可以表达一些创意、灵感和思考。

另外面试也是管理者获得灵感的过程。Hr面试难度适中,会考虑到专业类技术类人才的专业能力偏高而综合能力偏低。面试选拔方式:第一轮为无领导小组讨论,第二轮为Hr一对一面试(。

除此之外考察面试对象的综合素质,概括自己能力的优势。设置了互动性环节,一定要展示最真实的自己。三五位副总裁及以上级别的管理者会参与面试。

⑥ 京东的面试已经通过了,hr和面试官都说公司已经要我了,让我等offer,我已经等了半个月了,还有希望吗

要捉急啊,你可以先等两天,看一看卧龙阁上一些别人的面试经验,然后如果这周四之前还没有通知就可以打电话给他们人力咨询一下结果了,总体上讲应该没有大的问题。

看你对这份工作的重视和认可程度,如果你认为这是一个十分符合自己的工作,等一等又何妨呢!如果这份工作本来就一般般,那你在等待的过程中不如再找找看看,说不定可以找到更加合适的呢。

而且,我当时跳槽也遇到过同样的情况, 等了将近一个月才正式发出通知。这种情况有时候和公司做事风格有一定关系。不用太着急哦!心急吃不了热豆腐的哦!

⑦ 前端开发面试回答,你怎么回答

我面试过很多 前端程序员,非常了解面试者和面试官的心理,我可以很负责的告诉你:

就算面试你的人说你只能拿8K,但是你完全可以通过各种方法去拿到10K以上的薪资!

面试的时候面试官都是什么样的心理?

大多数公司的领导都会通过给你构造一个宏伟的蓝图以及对你进行技术打击,来让你降低标准,因为任何一家公司都希望花最少的钱请到最NB的技术人才,其实双方就是一个周旋的过程,看谁的情商更高一些,但往往都是面试者被面试官拿下的情况比较多。

我给面试经验不多的 前端程序员4个建议:

1、说工资时千万不要说自己的理想工资,在这个之上虚高一点!

假设你预期的薪资是10k,你很实在的说要10k,那么按照常理来说,你的工资标准是一定会被往下进行打压的。

你可以先说自己以前的工作的薪资在11K左右,现在换份工作想要13K的薪资,这个时候面试官就会想,这个人以前的工资是11k,现在给他10k他肯定是不会来的,但他还是会跟你进行压价,但是压价肯定都是在10k以上的,所以你和面试官谈判的时候,如果他认可你,那么你的薪资应该就会在10k-13k之间,无论最终是10k还是11k或者12k,我们的目标都已经达到了。你可以进行一番思考,最终同意对方的开价。

但是你不要跟轻易的答应,一定要拿捏一下,让对方觉得你也在考虑,最终你选择了他们公司,要表达出对他们公司的愿景,自己中意的是职业发展,喜欢的是公司氛围等等因素,这样对方才会认为你是看重公司的发展,而不是因为工资。关于这点我只能说,华夏民族的人和人交流的关系是世界最微妙的,这些套路大家心知肚明,但是你用和不用还真的是两种效果。

2、设置一个自己的心理价位

如果对方说的薪资低于这个心理价位,我们一定要果断拒绝,保持我们的原则性,不要因为对方说了而让你降低了自己的心理价位,这样也会让面试官觉得你非常的有原则,非常自信,人们都尊重这样的人,如果你一味的做舔狗,下场会非常悲惨。

根据我十年多的IT从业经验来看,即使是做同样的工作,也会存在着很多工资高低差距较多的情况,所以不要掉在一棵树上,现在社会工作机会这么多,只要有实实在在的技术,工作是很容易找的,一定要多去尝试。

3、凸显自己的价值,让对方觉得你是个人才

如果之前两点没有达到预期成效,但你又非常看好这家公司,就该尽力争取了;

用自己之前做成的事情说事情,最好是用数据给面试官说明,表达清楚自己为什么要这样的薪资,让对方感觉到你值这么多钱,如果对方公司现在比较缺人,而且你要的薪资没有特别离谱,还有有希望拿下的。

4、公司一般都有奖金福利可以弥补工资的欠缺

大多数人都想不到那么远,都是盯着眼前的薪资,但其实很多公司都有项目提成、奖金,这也是钱啊,有一些不错的公司都是14薪往上,所以在跟公司谈的时候,一定要去问他们是否有奖金、年终奖之类的福利。


除了被压榨薪资的问题,还有以下几点是必须要注意的!

1、项目作品

面试的时候,除了基础的知识技术外,一个项目经验是非常重要的,面试官会着重去问你的项目过程,所以准备好一份好的项目实战,不只是证明你对这次面试的重视,更是证明你有能力胜任这份工作的利器。

2、去背那些常问的面试题

面试题对于以下几个问题都会问:

·自我介绍(建议30s-60s)

·了解我们公司的基本情况吗?

·你上家公司离职的原因是什么?

·你自己的职业规划是什么?

·自我评价一下自己的优缺点?

以上问题都是大部分公司都会问到的,其实面试官只是想多了解你一些,而这些回答在网上有非常标准的答案,如果你觉得自己回答不好,你可以去网上找一些标准的答案背一下,还是非常有必要的,做到万无一失。

3、假设面试官没有跟你说薪资的问题,那么我们也不要主动去提及,这样会显得你非常的着急,最好是先拿到offer之后再去谈薪资,这样对于我们来说是非常有利的,经验之谈。

4、面试的时候不要对方问一句你就答一句,你一定要明白面试的本质是什么,在短时间内展示你的才华,方方面面的才能,给对方留下一个好的印象。

5、面试的过程中,是你展现的时候,所以80%的时间都应该你来主导,你来展示自己的才能,一定要非常着重的表现自己。

6、在回答面试官时,换位思考几秒钟:

·他为什么要问这个问题?

·他想知道什么答案?

·他想通过这个答案判断出什么?

所谓知己知彼才能百战不殆,你一定要换位思考对方问的问题,想要知道什么,从你的回答中他是否可以得到他想要的答案,所以面试是一门非常深的学问,人与人之间心理的博弈。

总结:

以上全部都是面试技巧方面,这属于细活,而真正掌握技术才是根本,如果你没有掌握良好的技术,技巧也帮助不了你找到一份工作,当你的技术达标,在加上好的面试技巧,就是如虎添翼,工作随便你选择。

常在这里回答问题,热爱技术,喜欢帮别人解答行业技术问题和行业知识。

如果大家对于学习前端有任何不懂的可以随时来问我,我给你提供一个非常不错的前端交流学习qun:前面是二九六,中间是二一二,后面是五六二。有问题就在里面问我,这样你可以少走很多弯路,做起来有效率,记得多跟有经验的人交流,别闭门造车。如果没有比较好的教程,也可以管我要。

⑧ 去面试京东项目经理职位,一般会问什么问题

  • 根据面试规则大体的问题,具体情况建议你需要对京东的公司做一下初步了解,公司运作模式,销售模式进行考察,问题可供参考:

  1. 你做项目经理几年了?能讲一下你做项目经理主要的职业是什么?

  2. 你目前工作中遇到d最大的挑战是什么?

  3. 能举例讲一个你做项目经理时遇到的困难,和最终处理办法?

  4. 平时项目进度怎么监控?

  5. 你的项目中都管理哪些数据?怎么收集及分析?

  6. 项目出现人手问题,怎么处理?等