面试

/ C++ / 没有评论 / 1942浏览

面试题无答案,有些我会加上提示!

网易一面:

1.内存对齐,为什么编译器要内存对齐,有什么好处?
2.auto关键字在什么情况下使用?
3.内联函数声明了就一定是内联函数吗?
  答案:是的,补充:如果你调用一个内联函数之前,这个函数一定要在之前有声明或者已定义未inline,如果在前面声明是普通函数,而在调用代码后面才定义成inline,可以通过编译但是没有实现内联。
4.虚函数的底层实现
  答案:虚表,单继承,多继承
5.析构函数在什么情况下不设置成虚函数有问题?
6.堆排序代码
7.快排代码
8.无需数组找出前K个最大数
  答案:堆排序,调整K次就得到了(不是最优解)
9.两个栈模拟队列的操作

编程题:

1.
#include <iostream>
#include <stdio.h>

int main() {
    char a[1000];
    int i;
    for(i=0;i<1000;i++)
    {
        a[i] = -1-i;
       // printf("%d ",a[i]);
    }
    printf("%d\n",strlen(a));
    return 0;
}
这个题考查char一个字节的范围,输出255
2.
两个有序数组,找出两个数组的交集。
答案:用归并的方式。
3.
二叉查找树找出任意两个节点的最近公共祖先节点
4.

一位大佬贡献:

大佬面试基础题

第16题的答案是不可以,因为虚函数是基于对象,而构造函数去创建一个对象,过程向逆。

一位同事贡献:

同事面试题