(3)算法綜合實踐——搜索引擎
(一)工作原理
第一步:爬行 搜索引擎是通過一種特定規律的軟件跟蹤網頁的鏈接,從一個鏈接爬到另外一個鏈接,像蜘蛛在蜘蛛網上爬行一樣,所以被稱爲“蜘蛛”也被稱爲“機器人”。搜索引擎蜘蛛的爬行是被輸入了一定的規則的,它需要遵從一些命令或文件的內容。
第二步:抓取存儲 搜索引擎是通過蜘蛛跟蹤鏈接爬行到網頁,並將爬行的數據存入原始頁面數據庫。其中的頁面數據與用戶瀏覽器得到的HTML是完全一樣的。搜索引擎蜘蛛在抓取頁面時,也做一定的重複內容
檢測,一旦遇到權重很低的
網站上有大量抄襲、採集或者複製的內容,很可能就不再爬行。
第三步:預處理 搜索引擎將蜘蛛抓取回來的頁面,進行各種步驟的預處理。
第四步:排名 用戶在搜索框輸入關鍵詞後,排名程序調用索引庫數據,計算排名顯示給用戶,排名過程與用戶直接互動的。但是,由於搜索引擎的數據量龐大,雖然能達到每日都有小的更新,但是一般情況搜索引擎的排名規則都是根據日、周、月階段性不同幅度的更新。
(二)搜索引擎崗位要求
1、負責公司網站 SEO 優化工作;
2、根據要求提升站點相關關鍵詞排名 ;
3、負責實施項目優化方案,並達到目標營銷效果;
4、評估、分析網站的關鍵詞等,根據項目需要制定核心的關鍵詞方案;
5、爲客戶的Google AdWords廣告帳戶提供廣告方案;
6、根據客戶市場投放策略,制定搜索引擎投放策略(包含百度、 Google 等);
7、根據投放策略,制定投放方案並負責實施投放計劃;
8、根據廣告投放數據調整投放策略並制定投放方案,和團隊一起執行投放計劃;
9、通過廣告優化對賬戶進行調整和延展,提升廣告效果;
10、每週或每月和客戶溝通,進行投放分析,解決客戶問題;
11、定期爲客戶制定報告並能夠識別和處理異常數據;
12、管理及培訓自己的團隊,提高工作效率;
13、日常後臺維護,網站改版,升級,添加模塊等;
14、關注行業發展最新動態;
15、理解客戶在線營銷的目標與目的,挖掘客戶需求;
16、積極收集、總結客戶行業特點,制定行業搜索營銷計劃。
(2)經典算法面試題
輸入一個長度爲n的數組,每個元素都不一樣,並且分佈在[1,n+1]區間裏。找到那個missing的數字。
例如輸入【1,2,3,4,5】,n=5,n+1=6,返回6,輸入【2,4,6,7,1,3】,n=6,n+1=7,返回5。
這n個數字可以是無序的。
我的解法
//without checking arguments
int find(int[] a, int n)
{
int sum = (int)(((n+1)/2.0)*(n+2));
for (int i=0; i<n;i++){sum -=a[i];}
return sum;
}
但是所有數字相加可能overflow,所以更好的解法是
int find(int[] a, int n)
{
int temp;
for (int i=1; i<=n+1; i++) {temp ^=i;}
for (int i=0;i<n;i++) {temp ^=a[i];};
return temp;
}
XOR的特性是兩兩消去,n^n=0, 0^n=n
所以出現偶數次的數字會相互抵消,缺失的那個數只出現一次(奇數次),自然就求出來了。
位操作,硬件有對應的指令,效率也很高。