1. 程式人生 > >位元組跳動(今日頭條)推薦演算法實習生面試

位元組跳動(今日頭條)推薦演算法實習生面試


2018-05-16 17:00 一面:

(1)自我介紹。

(2)介紹自己是如何去除水印和增加水印安全性的工作,對於自己做過的專案問的很具體。

(3)讓詳細介紹一下邏輯迴歸,包括邏輯迴歸的分類公式,損失函式、邏輯迴歸分類的過程。

(4)問了一下邏輯迴歸中損失函式的作用?

損失函式是評價模型的一個標準,它是衡量模型的預測值和真實值之間的誤差的一種評價標準。

(5)邏輯迴歸中除了損失函式能衡量模型的好壞,還有沒有其他的方法?

哎。。。自己悟性太低啦!問到這的時候,完全不知道面試官要問啥。現在想想應該是要問精度、錯誤率、準確率、召回率、ROC曲線和AUC面積等衡量模型的一些標準指標。

然後,這個問題面試官就說先過去吧!接著下一道。

(6)接下來,重點來了!位元組跳動中傳說的手撕程式碼來了!

面試官問:對資料結構和演算法有沒有了解啊!然後直接就給了一道演算法題,先說思路,然後就是現場寫程式碼。


題目:長度為n的陣列中,總是存在一個斷點(下標記為i),陣列中斷點前面的數字是有序的,斷點後的數字也是有序的,且斷點後邊的數字總是小於前面的數字。如果直接把斷點後邊的數字移動到陣列的前邊,那麼這個陣列將是有序的,具體描述如下所示。求這個陣列中的第n/2大的數。

原陣列:
6,8,10,13,1,2,4
找到斷點移動之後的陣列:
1,2,4,6,8,10
#############################
原陣列:
5,1,2,3,4,
找到斷點移動之後的陣列:
1,2,3,4,5
##############################
原陣列:
2,3,4,5,1
找到斷點移動之後的陣列:
1,2,3,4,5

我的思路:先找到斷點的下標i,然後根據下標直接取出第n/2(向上取整)大的元素。


1.如果你的第n/2大的數在斷點後邊,那麼可以直接通過下標計算得出第n/2大的數的下標。下標計算公式如下:


2.如果你的第n/2大的數在斷點的前面,那麼你可以把斷點後邊小於第n/2大的數給算上,然後在往前面查詢到第n/2大的數。下標計算公式如下:


public class Main {
	
	public static void main(String[] args){
//	    int[] array = {6, 8, 10, 13 , 1, 2, 4};
//		int[] array = {5, 1, 2, 3, 4};
		int[] array = {2, 3, 4, 5, 1};
	    int n = array.length;
	    int location = (int) Math.ceil(n/2.0);
	    int index = searchIndex(array);
	    int temp = 0;
	    if(location <= n - index){
	        temp = array[index+location - 1];
	    }else{
	        temp = array[location-(n-index+1)];
	    }
	    System.out.print(temp);
	}
	
	public static int searchIndex(int[] array){
	    for(int i=0; i<array.length; i++){
	        if(array[i] > array[i+1]){
	            return i + 1;
	        }
	    }
	    return 0;
	}
	    
}	

時間複雜度是O(n),空間複雜度是0。

這個演算法時間複雜度是O(n),主要是在於查詢斷點的下標i時花費了時間。面試官讓我來改進查詢下標i的演算法。我當時直接想出的是折半查詢,面試官肯定了是折半查詢演算法。但是在思考用折半查詢的時候,我自己遇到了兩個細節問題,沒有回答出來,所以這道題用折半查詢沒有回答出來。

遇到了兩個細節問題是:

(1)我們要找陣列中最小數的下標,那麼我們前提是不知道最小數是多少,如何進行比較查詢最小數。

(2)在折半查詢的過程中,如何確定最小數是在左半邊還是在右半邊,換句話說,你是搜尋左邊的陣列還是搜尋右邊的陣列呢!

給出程式碼:

public class Main {
	
	public static void main(String[] args){
	    int[] array = {6, 8, 10, 13 , 1, 2, 4};
//		int[] array = {5, 1, 2, 3, 4};
//		int[] array = {2, 3, 4, 5, 1};
	    int n = array.length;
	    int location = (int) Math.ceil(n/2.0);
	    int index = Select_k(array, 0, n-1, location);
	    System.out.print(index);
	}
	
	 public static int quickSortOneTime(int[] array, int low, int high){ //一趟快速排序   
		 int  key = array[low];  
         while(low < high){  
        	while(key < array[high] && low < high)  high--;
            array[low] = array[high];  
            while(key > array[low] && low < high)   low++;  
            array[high] = array[low];
         }  
	    array[high] = key;  
	    return high;
	    }  
	 
	 public static int Select_k(int[] array, int low, int high, int k) {
		 int index;
		 if(low == high) return array[low];
		 int partition = quickSortOneTime(array, low, high);
		 index = high - partition + 1;  //找到的是第幾個大值
		 if(index == k) {
			 return array[partition];
		 }else if(index < k) {//此時向左查詢
			 return Select_k(array, low, partition-1, k-index);  //查詢的是相對位置的值,k在左段中的下標為k-index
		 }else {
			 return Select_k(array, partition+1, high, k);
		 }
	 }
	    
}	

時間複雜度數O(logN)

詳細介紹看我的這篇文章:

相關推薦

位元組跳動今日頭條推薦演算法實習生面試

2018-05-16 17:00 一面:(1)自我介紹。(2)介紹自己是如何去除水印和增加水印安全性的工作,對於自己做過的專案問的很具體。(3)讓詳細介紹一下邏輯迴歸,包括邏輯迴歸的分類公式,損失函式、邏輯迴歸分類的過程。(4)問了一下邏輯迴歸中損失函式的作用?損失函式是評價

今日頭條文章推薦演算法摘記

一、使用者標籤 使用者標籤今日頭條常用的使用者標籤包括使用者感興趣的類別和主題、關鍵詞、來源、基於興趣的使用者聚類以及各種垂直興趣特徵(車型,體育球隊,股票等)。還有性別、年齡、地點等資訊。性別資訊通過使用者第三方社交賬號登入得到。年齡資訊通常由模型預測,通過機型、閱讀時間分佈等預估。常駐地點來

今日頭條個性化推薦演算法

要點: 1. 協同過濾 基於投票的規則,若某個使用者組對某篇文章投票較多,則判斷該使用者組對該篇文章較感興趣 2. 使用者屬於多組情況處理 若某個使用者屬於多個組,則採用加權平均的方式選取得分最高的文章進行推薦,權重係數利用邏輯迴歸確定。 w1(組的權重係數)*該組對某文章

2018年各大網際網路前端面試題五今日頭條

基礎行標籤都有哪些?特點?img標籤的用法請描述一下cookies,sessionStorage和localStorage的區別?一個div,高度是寬度的50%,讓該div的寬度佔據整個螢幕,然後能自適應,垂直居中,怎麼實現?針對移動瀏覽器端開發頁面,不期望使用者放大螢幕,且要求“視口(viewport)”寬

今日頭條(java後臺開發)——實習生面試

2018.1.3下午三點半視訊面試。(全程34分鐘)   面試之前自己還是很緊張的,畢竟也是我的初面。 1. 問:說一下Java記憶體管理機制。 答:(因為自己最近才開始看,所以瞭解的不多。)java記憶體主要分為這幾部分:方法區、堆、java虛擬機器棧、本地方法棧、程式計

算法題 22 折紙問題 牛客網,今日頭條

-s question app 數組 sample 代碼 tro quest 每次 鏈接:https://www.nowcoder.com/questionTerminal/430180b66a7547e1963b69b1d0efbd3c來源:牛客網 請把紙條豎著放在桌?上

MarkDown/Html線上轉換支援程式碼高亮,可複製到微信公眾號、今日頭條

MarkDown/Html線上轉換能夠將md渲染成html並且能保持程式碼高亮,可以方便的複製待格式的html貼上到微信公眾號,CSDN,簡書,部落格園,開源中國等。 掃碼體驗線上助手小程式 我是java程式碼 public static void main(String[

頭條校招今日頭條2017秋招真題1——python解法

題目描述 頭條的2017校招開始了!為了這次校招,我們組織了一個規模巨集大的出題團隊。每個出題人都出了一些有趣的題目,而我們現在想把這些題目組合成若干場考試出來。在選題之前,我們對題目進行了盲審,並定出了每道題的難度係數。一場考試包含3道開放性題目,假設他們的難度從小到大分別為a, b, c,我

吳恩達機器學習十四推薦系統基於梯度下降的協同過濾演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的推薦系統,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 在推薦系統中,主要有兩種方法,基於內容的推薦

React實戰篇React仿今日頭條

前言 上次初學用 react 寫了個後臺管理,這次便尋思寫個移動端的專案。便有了這次的這個專案。 這個專案以前寫了個 vue 的版本。有興趣的可以 點選進入 賬號: vue-toutiao 密碼: 123456 技術棧 react + react-redu

位元組跳動冬令營網路賽H-Accel World(弗洛伊德最短路+圖DP)

題目連結https://ac.nowcoder.com/acm/contest/296/H 題目描述 Chiaki was trapped in a strange place which can be regarded as a connected undirected graph with n ver

【mahout筆記】初步理解userCF基於使用者的推薦演算法在mahout的實現

昨天嘗試在java中搭建了一個mahout的小demo,實現的就是基於使用者的推薦演算法。程式碼如下(更多程式碼和測試資料庫)參見前一篇: public class RecommendTest { final static int NEIGHBORHOOD_NUM =

「每日一面」生產者消費者問題今日頭條Android崗位面試題

        以前去面試今日頭條Android崗位,沒有問太多安卓技術問題,印象比較深的就是讓手寫一下生產者消費者的問題。當時只想到多執行緒,等待阻塞,但是準備不足,沒有寫出來。今天再覆盤理解分享一下。1. 生產者消費者問題?        生產者消費者問題(英語:Prod

Android今日頭條頭條點贊動畫

前言 設計很開心,又找到一個好看的效果。 開發很痛苦,又要百度找效果。納尼!!!沒找到!!! o(TωT)o 設計直接把原效果給我看,讓我抄… 預覽 APK下載 思路

情境感知上下文資訊推薦系統---《推薦系統技術、評估及高效演算法》---讀書筆記7

一、目錄組織圖(單擊圖放大)二、補充筆記1、情境,簡言之,可以理解為使用者的一些額外資訊,比如位置、時間、天氣、是否有同伴陪同等。我認為是能夠影響使用者決策的一些額外的資訊。2、推薦問題可以歸納為預測一個使用者未接觸的物品的評分,這個預測通常是基於該使用者對其他物品的評分、其

2017Android面試回憶錄「下」今日頭條/小米/網易/知乎...

前言 PS: 時間週期:【2017/6 – 2017/7】 來源: 【本部分由「洛廷」和「劍膽詩魂」提供】 沒有嚴格按照面試輪次來區分 今日頭條 ☐ 快速排序 ☐ JSON字串解析演算法及優化 ☐ AB

資料探勘乾貨總結--推薦演算法之CF

本文共計1245字,預計閱讀時長八分鐘推薦演算法(二)--CF演算法一、推薦的本質推薦分為非個性化和個性化,非個性化推薦比如各類榜單,而本系列主要介紹個性化推薦,即:在合適的場景,合適的時機,通過合適的渠道,把合適的內容,推薦給合適的使用者二、推薦演算法的種類1. 基於內容C

多邊形構成問題今日頭條筆試題

問題描述:有一個由很多木棒構成的集合,每個木棒有對應的長度,請問能否用集合中的這些木棒以某個順序首尾相連構成一個面積大於 0 的簡單多邊形且所有木棒都要用上,簡單多邊形即不會自交的多邊形。 初始集合是空的,有兩種操作,要麼給集合新增一個長度為 L 的木棒,要麼刪去集合中

【mahout筆記】初步理解itemCF基於物品的推薦演算法在mahout的實現

之前分析了基於使用者的CF的原理。今天嘗試除錯一下基於物品的CF演算法。 感謝大佬的整理為我指明方向。 基於物品的CF的原理和基於使用者的CF類似,只是在計算鄰居時採用物品本身,而不是從使用者的角度,即基於使用者對物品的偏好找到相似的物品,然後根據使用者的歷史偏好,推

關於2015阿里移動推薦演算法大賽的總結——推薦演算法

雖然開始走錯了路,但是也學到了東西,美團技術團隊的文件還是不錯的,喜歡的童鞋可以經常去瞅瞅,後面我會給連結的~~~~ —————————————————————————————————————————————————————————————— 具體流程 基本流程如