华为提前批+腾讯tst内推
楼主计算机研究生二年级,研究方向存储系统。上周参加了上海华为提前批的校招面试,面试之前先做测评和机考,机考是两道题,限时两个半小时,很简单,一题是根据1900.1.1是星期一,计算出以后某个日期是星期几,另外一题是判断一个数字是不是2的幂次,测评是性格测试,很多很繁杂,反正做到最后我都怀疑自己的性格,结果第二天hr打电话说我测评没过,要重做。。。不过,华为对这次提前批挺重视的,反正我是被打动了。上午专车从学校接人到上研所,接着我们大概30-40多人被安排到一个会议室里听宣讲会,华为几个部门的领导都来讲(无线、终端、2012、云核、***研究院,还有一个忘了),主要讲他们业务、分布、需要的人、有哪些牛人,接着让我们选志愿,我选了终端操作系统方向,说实话,我挺想以后做操作系统的工作的。然后hr请我们下去吃饭,感觉华为食堂好大,餐馆好多,跟一般商场里的餐馆差不多,感觉最近吃的最丰富的饭就是那顿饭了。期间,主管跟我们讲解了华为加班情况,据说,现在星期二四加班,月末周末加班,然后发布新产品前会忙一点,但我想吧没那个互联网企业不加班的吧,除了外企,楼主现在在上海英特尔实习,这里真不加班,氛围也挺好,但是感觉中国外企都做不了核心的业务,个人提升的途径也不是很好。说远了,吃完饭,我们又参观了华为的展厅,看了各种各样的手机,手表,平板。下午面试,面试分为技术面和综合面,技术面是一个从原来在英特尔工作的工程师面我的,刚好他也是做存储的,面对对口专业的面试官,感觉好有压力。面试大概40分钟,先是自我介绍,然后介绍了一下我做的一个Linux文件系统,针对项目问了一些Linux内核的基础知识,如伙伴系统、slab缓存,然后是说怎么根据大量小型文件读写的情景改进我的设计,怎么对存储区域做垃圾回收(碎片化整理),怎么从源头上解决小型文件带来的碎片化问题。接着是综合面,综合面是华为终端的主管(?,不太确定),先是了解了一下个人情况(家庭、学校、兴趣爱好,与自我介绍不一样的那些东西),接着介绍华为和他所在部门的情况,薪酬预期(今年华为给的薪水挺高的),说是综合面,基本是他一个人在说,我负责嗯嗯和点头。。。总的来说,华为的面试深度挺高的(个人感觉),而不是其他公司常面的那些堆栈、进程线程、算法题等(吐个槽),而且基本是针对项目来面,准备也好准备。
腾讯tst
我是内推那一周投的内推,职位是后台c++开发,过了一周大概7.29一面,一面是技术面和简历面,我选的是深圳SNG,结果来电话的是深圳互动娱乐事业群的。面试官说他是做手游开发的,问我可不可以跟他面,我当然说可以啦,然后他又要开视频。面试实录:
1 自我介绍
2 介绍项目,并针对项目问问题
3 介绍一下ARP协议
4 介绍一下c++的多态
5 堆和栈的区别
6 接着在QQ上做题,
class Base { public: Base(){ std::cout<<"Base::Base()"<<std::endl; } ~Base(){ std::cout<<"Base::~Base()"<<std::endl; } }; class Base1: public Base { public: Base1(){ std::cout<<"Base1::Base1()"<<std::endl; } ~Base1(){ std::cout<<"Base1::~Base1()"<<std::endl; } }; class Derive { public: Derive(){ std::cout<<"Derive::Derive()"<<std::endl; } ~Derive(){ std::cout<<"Derive::~Derive()"<<std::endl; } }; class Derive1: public Base1 { private: Derive m_derive; public: Derive1(){ std::cout<<"Derive1::Derive1()"<<std::endl; } ~Derive1(){ std::cout<<"Derive1::~Derive1()"<<std::endl; } }; int main() { Derive1 derive; return 0; }
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; struct A { short a1; short a2; short a3; }; struct B { long b1; short b2; }; int main() { char* s1 = "0123456789"; char s2[] = "0123456789"; char s3[100] = "0123456789"; int s4[100] = { 0 }; char* str1 = (char *)malloc(100); void* str2 = (void *)malloc(100); cout << sizeof(s1) << endl; cout << sizeof(s2) << endl; cout << sizeof(s3) << endl; cout << sizeof(s4) << endl; cout << sizeof(str1) << endl; cout << sizeof(str2) << endl; cout << sizeof(A) << endl; cout << sizeof(B) << endl; return 0; }
char *GetMemory(void) { char p[] = "hello world"; return p; } void Test(void) { char *str = NULL; str = GetMemory(); printf(str); }
void GetMemory(char *p) { p = (char *)malloc(100); } void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); }
void GetMemory(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf(str); }
class AAA { public: virtual void Test() = 0; }; sizeof(AAA) = ?
7 继续做题。。。求复杂度
n = 10 for (i = 1; i < n; i++) for (j = 1; j < n; j += n/2) for (k = 1; k < n; k = 2*k) x = x + 1;8 还是做题,设计算法,找到单向链表的中间位置的节点,如果中间位置是两个节点,找到第一个。实现算法,进行单向链表的逆置(分别递归和非递归)。
struct Node {
int data;
Node* next;
};
typedef Node* List;
9 有一个集合,其元素为所有大写英文字母,即{ A, B, C, ..., X, Y, Z
},设计递归和非递归算法,输出该集合的所有子集。
今天晚上二面,过了这么久还以为挂了,结果又要视频电话,期间因为网络问题断断续续,体验不是很好。主要就是自我介绍,我的兴趣爱好。问我的项目,项目中遇到的问题,怎么解决,我在项目中扮演的角色等等,又谈到了腾讯的文化、新员工怎么融入集体等,他还开玩笑说我要是挂了会不会参加十月的校招,当时就想别吓我啊。。大概十五分钟,不知道结果。
现在大概就这些,然后未完待续,以后还参加面试的话继续在这里补充吧。