當前位置:首頁 » 網頁前端 » 京東面試題前端
擴展閱讀
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. 項目出現人手問題,怎麼處理?等