百度凤巢面试复盘(策略研发方向[实习])

百度凤巢面试复盘(策略研发方向)

一面(51min)

  1. 自我介绍+问项目

  2. 写正则表达式:抓取以a开头b结尾的字符串在哪一行

  3. 算法:逆置链表(注意命名规范

  4. 解释内存中的堆栈:是确切存在的物理结构,是用来存放不同数据的内存空间。堆实际是一个队列,与操作系统内存分配(首次适应等算法契合),用户动态分配释放堆。栈:实际上也是FILO的结构,如递归、函数调用用到,用于保存变量值(保护现场),操作系统自动分配释放栈。

    例题:

    int a=6;
    int *p= new int();
    // p、a分别在栈还是堆
    
  5. 解释C++静态变量,eg:static int a

    两种变量存储在静态存储区:全局变量和static变量

    作用1:隐藏,同样一个变量名在file1.cpp定义,在file2.cpp也可以定义不会冲突。

    作用2:保持变量持久,具有记忆功能和全局生命期。

    作用3:默认初始化为0。

    作用4:C++中的类成员声明static

    在类中声明static变量或者函数时,初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

    (参考:https://www.cnblogs.com/songdanzju/p/7422380.html)

  6. 进程之间的通信方式:套接字、共享内存、管道、锁等;

  7. 网络中进程的唯一标识是什么?简述A进程怎么和B进程通信。

  8. 有以下题目:

    struct A
    {
        int a;
        char b;
    };
    // 求sizeof(A)=?
    

考虑内存对齐,答案为8。
(参考:https://blog.csdn.net/xiong452980729/article/details/70140050)
9. 简述算法:求两个无序数组的交集。(快问快打环节、面试官没给太多思考时间)

–A:用set/multiset

–Q:时间复杂度多少?

–A:底层是红黑树实现,总体时间复杂度O(nlogn)。

–Q:不用容器呢?有没有更快的方法?可以有空间开销。

–A:利用hash,记录哪些元素被访问过。时间复杂度是O(n),但是有额外空间开销。

–Q:如果数组有序呢?不能有空间开销。

–A:(有序必用二分查找啊),用二分查找,将第二个数组的重复元素置为一个不会用到的数。时间复杂度O(nlogn)。

二面(54min)

  1. 自我介绍+问项目

  2. C语言考察,指针考察。

    main()
    {
        char *str;
        input(str);
        cout<
  3. 内存中的堆栈区别。(同一面)

  4. 什么是虚函数。

  5. 算法:实现一个IP地址映射到一个INT,并且INT也能映射会IP地址,不能有额外开销。

    – 由于IPV4是32位,INT也是32位,按位存储即可。

    实现IP地址映射到INT的算法。(字符串处理+位运算)

  6. 一个链表奇数偶数夹杂乱序,如何使奇数在前,偶数在后。

    – 创建两个头指针head1、head2,遍历链表,奇数插入head1,偶数插入head2,最后修改head1链尾指针即可。

  7. 算法:实现二叉排序树。(15min以内实现)

    struct Node
    {
        int val;
        Node *left;
        Node *right;
    };
    
    Node* BuildBST(const vector&nums)
    {}
    // 顺序插入nums中的元素
    
  8. 两个链表,

    1->3->3 表示133这个数

    1->3 表示13这个数

    这两个链表相加

    1->4->6

    如何实现?

    – 考虑特殊情况 9->9->9 , 1 这两个链表相加得 1->0->0->0 ,最好的方法是链表逆置只有,个位对齐,进位向后传递。

三面(10min)

  1. 自我介绍,主要是互相了解情况,说明一些实习原则,然后对你个人进行了解。
  2. 你还有什么问题问我吗?

感受:第一场企业面试,很受用,也很激动,很多话没有说好,也发现自己有很多没有理解的地方。此次面试难度中等,没有压力面。

你可能感兴趣的:(面经)