cvte 软件开发c++技术面一面经

cvte 技术面一

自我介绍之后,问是否做过项目?没有就直接上代码找错or输出结果

  1. //针对c里面的指针的理解 //判断输出 #include<stdlib.h>
    #include<stdio.h>
    int main(){  int a[] = {1,2,3,4,5};  int *ptr = (int *)&a + 1;  printf("%d,%d",*(a+1),*(ptr-1));
        return 0;
    }
    
    //输出结果  2,1
    //int *ptr = (int *)&a + 1;必须加强制类型转换否则报错
  2. //运算符sizeof的理解
    //判断下列代码是否有错?问题出在哪里?
    #include<stdio.h>
    int main(){  int buffer[20];  int * pbuffer = buffer;  for(int i = 0; i < sizeof(buffer);i++){  *(pbuffer++) = 0;  }  return 0;
    }
    
    //整个循环执行20*4次,而pbuffer分配了20个整数的位置,超过20以后,没有分配内存,赋值出现错误,不可行 

  3. virtual 关键字的作用,是否了解多态,虚函数的底层实现?析构函数能否为虚函数?析构函数能否重载?为什么?构造函数能否是虚函数?为什么?

  4. 是否了解内联函数?怎么实现内联函数?与宏定义有什么区别?是否所有函数都可以写成内联函数?虚函数是否可以定义内联函数?

  5. 了解哪些常用STL容器?选择一个认为比较熟悉的容器,vector和list的区别,优缺点?vector的底层扩容机制?为啥是2倍,1.5倍,而不是3,4倍?是否测试过?声明一个vector,数据个数按2,10,100,1090,增长,vector应该声明多大的?为什么?双向队列有什么特点?实现机制?里面的数据在内存上怎么存放(随机or有序)?

  6. 基本的数据结构,是否自己实现单向链表?

  7. 讲述一下如何判断一个单向链表是否形成环?手写代码判断两个单向链表是否相交,若相交,返回第一个相交节点(8-10分钟)。写完代码之后,问有什么可以优化的地方?

  8. 是否了解多线程?线程与进程的区别?进程数是否越多越好?为什么?在一个项目设计中,如何确定进程的数量?


#广州视源电子科技股份有限公司##C++工程师#
全部评论
这什么岗位??
点赞 回复 分享
发布于 2017-09-20 21:38
为啥跟我的差不多的呀
点赞 回复 分享
发布于 2017-09-20 21:39

相关推荐

点赞 30 评论
分享
牛客网
牛客企业服务