**旅行-interveiw

  1. 公司環境
    1.1硬件環境
    1.2公司文化
  2. 面試題目
    2.1c/c++部分
    2.2算法部分
  3. 總結

    1. 公司環境
    1.1硬件環境
    ①每人一臺臺式機和一臺MAC筆記本;②coffee隨便取;③早中餐免費供應
    1.2公司文化
    ①20**年創業公司②分離於搜狗,做全球旅行方向③主要從事自然語言處理,數據挖掘方向
    2. 面試題目
    綜述:面試官人很nice~;先問了自己做過的項目(babala~babala),說了蠻多;然後問些比較基礎的題目;手寫相應的算法;想了解的公司的具體情況,以及實習時間安排(後話了…)
    2.1c/c++部分
    2.1.1STL當中vector和數組區別
    ①數組定長,vector可以動態增長②vector提供了許多方便的庫函數③vector特點簡述:動態分配策略只增不減;其capacity()有一個固定分配,方便push元素的內容重新分配;當添加元素超過以前的容量時,新分配一塊空間(原則是兩倍),兩部分元素(原來元素,push的元素)拷貝到新得空間中;析構以前的內存空間
    http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html%20%E5%8F%82%E8%80%83“>參考鏈接
    2.1.2深拷貝與淺拷貝的區別
    淺拷貝本質:兩個指針指向同一塊空間
    因此,在內存析構時,①指針會釋放兩次;②任何一次的變動都會對數據結果產生影響;③因爲第一次已經釋放,第二次內存釋放會出現問題
    參考鏈接:

    http://blog.csdn.net/feitianxuxue/article/details/9275979%20%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5

    2.2算法部分
    2.2.1k-means算法思想
    ①隨機選取k箇中心點②將與其中近的點歸屬爲一類(共k個類),計算其質心③將質心作爲輸入的中心點④迭代②③過程 終止條件:輸入的終止次數或者質心不在發生改變。
    參考鏈接:

    http://blog.csdn.net/qll125596718/article/details/8243404

    2.2.2鏈表反轉
    leetcode的經典題目
    代碼如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:

   ListNode* reverseList(ListNode* head)
   {
       if(!head||!head->next)
        return head;
       ListNode*pre=head;
       ListNode*p=head->next;
       pre->next=NULL;
       while(p)
       {
           ListNode*q=p->next;
           p->next=pre;
           pre=p;
           p=q;
       }
       return pre;
   }
/*    ListNode* reverseList(ListNode* head) 
    {
        if(!head || !head->next)
            return head;
        return reverse(head, NULL);
    }
    ListNode* reverse(ListNode* head, ListNode* add)
    {
        if(head == NULL)
         return add;
        ListNode* temp = head->next;
        head->next = add;
        return reverse(temp, head);
    }*/
};

2.2.3找連續子數組的最大和(於搜狗面試)
leetcode經典題目

class Solution {
public:
    int maxSubArray(vector<int>& nums)
    {
        int max=INT_MIN;//
        int sum=0;
        for(int i=0;i<nums.size();i++)
        {
        if(sum>=0)
        sum+=nums[i];
        else
        sum=nums[i];
        max=sum>max?sum:max;
        }
        return max;
    }
};

3.總結
I.題目都非常簡單,都來源生活當中的積累;II.讓我們一同學習,共同努力,明天會更好!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章