zoukankan      html  css  js  c++  java
  • 2015趋势科技校招笔试面试

    一、笔试

    百度文库(趋势科技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=8sizeofa);在编译过程中,它不管a的值是什么,只是被替换成类型 sizeofint); 结果为4.如果sizeofa=6);呢,也是一样的转换成a的类型,但是要注意 因为a=6是不被编译的,所以执行完sizeofa=6);a的值还是6,是不变的.

    二、面试

    面试真真是想吐槽一下,也不知道是趋势最近不缺人还是咋的,也有可能我第一个还没安排好流程,我报的是开发,一上来就安排了一个搞测试的,然后聊到一半正到重点被打断,接着换了一个据说来自最有钱的部门的技术经理,然后又重新开始,c++基础、继承、多态、内存分配机制,实现快速插入查找用什么数据结构最好,问得都挺简单的,让写了一个字符串替换的小程序(输入一个带有' '的字符串,将其中的' '全部替换为' ',当时只傻傻的用两层循环实现);

    回来后研究了下,可以转string实现:

     1 //用string的replace()或erase()和insert()
     2 const char* replace1(char *input){    
     3     string s=input;
     4     string src="
    ";
     5     string dest="t";
     6     string::size_type pos=0;
     7     while((pos=s.find(src,pos))!=string::npos){
     8         s.replace(pos,src.size(),dest);//s.erase(pos,src.size());s.insert(pos,dest);
     9         pos+=dest.size();
    10     }
    11     char *end=new char[strlen(input)+1];
    12     strcpy(end,s.c_str());
    13     return end;
    14     //return s.c_str();//error: s对象被释放
    15 }

    稍微难一点关于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表,无序,可重复 
  • 相关阅读:
    Windows 2008server部署pxe启动安装windows系统
    wordpress迁移报错
    解决PHP无法监听9000端口问题/502错误解决办法
    Failed to start LSB: starts php-fpm
    nginx.service: control process exited, code=exited status=1
    linux通过ntp同步时间
    ESXI6.7主机降级至ESXI6.5
    在vCenter Server中添加ESXi 主机失败的问题
    windows ping bat脚本
    不错的网站压力测试工具webbench
  • 原文地址:https://www.cnblogs.com/irun/p/4515214.html
Copyright © 2011-2022 走看看