- 公司環境
1.1硬件環境
1.2公司文化 - 面試題目
2.1c/c++部分
2.2算法部分 總結
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個類),計算其質心③將質心作爲輸入的中心點④迭代②③過程 終止條件:輸入的終止次數或者質心不在發生改變。
參考鏈接: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.讓我們一同學習,共同努力,明天會更好!