2015趋势科技校招笔试面试
2015-05-19 18:05
381 查看
一、笔试
百度文库(趋势科技2015校园招聘笔试题)有很多原题,考的范围很广,计算机网络:协议,c++:继承、字节对齐、二维数组等等,总体一般,不深不浅。贴几道印象深的题:
1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
答案:虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.
2.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? 在子类的空间里,有没有父类的这个函数,或者父类的私有变量?
答案:只要基类在定义成员函数时已经声明了virtual关键字,在派生类实现的时候覆盖该函数时,virtual关键字可加可不加,不影响多态的实现。子类的空间里有父类的所有变量(static除外)。
3.构造函数可以为虚函数吗?
不能,构造函数是在对象完全构造之前运行的,在构造函数运行的时候,对象的动态类型还不完整。
4.常成员函数和非常成员函数可以共存吗?
可以,常量对象调用常成员函数
5.对于下列的程序片段,哪些表达式的结果为6?BC
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};int i=1,j=2;
A.**(arr+3*i+j) B.*(*(arr+i)+j) C.*(arr[i]+j) D.*(arr+3*i+j)
6.string str[]={"trend","micro","soft"};
cout<<sizeof(str)<<" "<<sizeof(string)<<endl;//96 32
*sizeof 不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字;sizeof()括号内在编译过程中是不被编译的,而是被替代类型,如 int a=8;sizeof(a);在编译过程中,它不管a的值是什么,只是被替换成类型 sizeof(int); 结果为4.如果sizeof(a=6);呢,也是一样的转换成a的类型,但是要注意 因为a=6是不被编译的,所以执行完sizeof(a=6);a的值还是6,是不变的.
二、面试
面试真真是想吐槽一下,也不知道是趋势最近不缺人还是咋的,也有可能我第一个还没安排好流程,我报的是开发,一上来就安排了一个搞测试的,然后聊到一半正到重点被打断,接着换了一个据说来自最有钱的部门的技术经理,然后又重新开始,c++基础、继承、多态、内存分配机制,实现快速插入查找用什么数据结构最好,问得都挺简单的,让写了一个字符串替换的小程序(输入一个带有'\r\n'的字符串,将其中的'\r\n'全部替换为'\r',当时只傻傻的用两层循环实现);
回来后研究了下,可以转string实现:
稍微难一点关于STL里面map底层是通过什么数据结构实现的?TCP是阻塞机制的吗?
C++STL底层数据结构实现(重要,待研究):
1.vector 底层数据结构为数组 ,支持快速随机访问
2.list 底层数据结构为双向链表,支持快速增删
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问。
deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下:
[堆1] --> [堆2] -->[堆3] --> ...
每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品.
4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
(stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)
6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
7.set 底层数据结构为红黑树,有序,不重复
8.multiset 底层数据结构为红黑树,有序,可重复
9.map 底层数据结构为红黑树,有序,不重复
10.multimap 底层数据结构为红黑树,有序,可重复
11.hash_set 底层数据结构为hash表,无序,不重复
12.hash_multiset 底层数据结构为hash表,无序,可重复
13.hash_map 底层数据结构为hash表,无序,不重复
14.hash_multimap 底层数据结构为hash表,无序,可重复
百度文库(趋势科技2015校园招聘笔试题)有很多原题,考的范围很广,计算机网络:协议,c++:继承、字节对齐、二维数组等等,总体一般,不深不浅。贴几道印象深的题:
1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?
答案:虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在运行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键.
2.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? 在子类的空间里,有没有父类的这个函数,或者父类的私有变量?
答案:只要基类在定义成员函数时已经声明了virtual关键字,在派生类实现的时候覆盖该函数时,virtual关键字可加可不加,不影响多态的实现。子类的空间里有父类的所有变量(static除外)。
3.构造函数可以为虚函数吗?
不能,构造函数是在对象完全构造之前运行的,在构造函数运行的时候,对象的动态类型还不完整。
4.常成员函数和非常成员函数可以共存吗?
可以,常量对象调用常成员函数
5.对于下列的程序片段,哪些表达式的结果为6?BC
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};int i=1,j=2;
A.**(arr+3*i+j) B.*(*(arr+i)+j) C.*(arr[i]+j) D.*(arr+3*i+j)
6.string str[]={"trend","micro","soft"};
cout<<sizeof(str)<<" "<<sizeof(string)<<endl;//96 32
*sizeof 不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字;sizeof()括号内在编译过程中是不被编译的,而是被替代类型,如 int a=8;sizeof(a);在编译过程中,它不管a的值是什么,只是被替换成类型 sizeof(int); 结果为4.如果sizeof(a=6);呢,也是一样的转换成a的类型,但是要注意 因为a=6是不被编译的,所以执行完sizeof(a=6);a的值还是6,是不变的.
二、面试
面试真真是想吐槽一下,也不知道是趋势最近不缺人还是咋的,也有可能我第一个还没安排好流程,我报的是开发,一上来就安排了一个搞测试的,然后聊到一半正到重点被打断,接着换了一个据说来自最有钱的部门的技术经理,然后又重新开始,c++基础、继承、多态、内存分配机制,实现快速插入查找用什么数据结构最好,问得都挺简单的,让写了一个字符串替换的小程序(输入一个带有'\r\n'的字符串,将其中的'\r\n'全部替换为'\r',当时只傻傻的用两层循环实现);
回来后研究了下,可以转string实现:
//用string的replace()或erase()和insert() const char* replace1(char *input){ string s=input; string src="\r\n"; string dest="t"; string::size_type pos=0; while((pos=s.find(src,pos))!=string::npos){ s.replace(pos,src.size(),dest);//s.erase(pos,src.size());s.insert(pos,dest); pos+=dest.size(); } char *end=new char[strlen(input)+1]; strcpy(end,s.c_str()); return end; //return s.c_str();//error: s对象被释放 }
稍微难一点关于STL里面map底层是通过什么数据结构实现的?TCP是阻塞机制的吗?
C++STL底层数据结构实现(重要,待研究):
1.vector 底层数据结构为数组 ,支持快速随机访问
2.list 底层数据结构为双向链表,支持快速增删
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问。
deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下:
[堆1] --> [堆2] -->[堆3] --> ...
每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品.
4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
(stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)
6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
7.set 底层数据结构为红黑树,有序,不重复
8.multiset 底层数据结构为红黑树,有序,可重复
9.map 底层数据结构为红黑树,有序,不重复
10.multimap 底层数据结构为红黑树,有序,可重复
11.hash_set 底层数据结构为hash表,无序,不重复
12.hash_multiset 底层数据结构为hash表,无序,可重复
13.hash_map 底层数据结构为hash表,无序,不重复
14.hash_multimap 底层数据结构为hash表,无序,可重复
相关文章推荐
- 2015校招面试笔试题笔记
- 2015 NI 校招笔试机试面试
- 2015校招笔试面试算法总结之蓝汛笔试
- 【名企面试】百度2015校招笔试题(头巾问题)
- 2015春季实习生招聘 多益网络科技有限公司笔试+面试 游戏开发工程师
- 【校招笔试面试之字符串处理】在字符串中找出连续最长的数字串。
- 创新工场2015校园招聘笔试+面试
- 校招笔试面试操作系统常考内容
- 九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试六十题
- 阿里巴巴2015校招研发在线笔试题
- 亚马逊2015校招在线笔试2
- 2015华为南研所校园招聘笔试面试经历
- 2015腾讯校招后台开发类内推电话面试(技术工程事业群TEG内推面试分享)
- 算法-美团2015校招笔试:写一个复杂度为n的排序算法
- 趋势科技2011校招笔试题+答案解析
- 百度2015校招笔试题(头巾问题)
- 2016东软校招笔试面试体验
- 名企笔试:百度2015校招笔试题(头巾问题)
- 校招笔试面试中IP地址常见问题总结
- 九月十月百度,迅雷,华为,阿里巴巴最新校招笔试面试六十题(11.05)