字节跳动后台开发 一二面面经

字节跳动教育部门-在线教室 后台开发实习生
一面:
  1. 面试官介绍部门,自我介绍
  2. C++类型转换 static_cast, const_cast, reinterpret_cast, dynamic_cast
  3. dynamic_cast 可以从子类指针转父类指针吗?
  4. 面向对象,封装,继承,多态,介绍一下,这三者的意义分别是什么,这样做优势在哪?
  5. 给一分钟时间阅读代码,回答问题:
/*
* 5.1 A* x = new B() 的构造过程
* 5.2 输出时什么?x->foo(); 执行的过程是怎么样的?虚表是什么时候生成的?
* 5.3 x 内存里边除了虚指针还有什么?描述一下 x 的内存分布式什么样的?
* 5.4 B类的对象内存模型是怎么样的?Member内存模型是怎么样的?sizeof(x)是多少?sizeof(B的对象)是多少?为什么?
* 5.5 delete x; 整个过程是怎样的?B,A两个类都没写析构函数,会怎么样?delete x 会调用到B的析构函数吗?会发生内存泄漏吗?怎么改可以避免内存泄漏?
* 5.6 只在 A 类中添加一个虚析构函数可以避免内存泄漏吗?为什么?整个过程是什么样的?
* 这个地方被面试官绕的很晕。。。面试官问题都很犀利
*/

class Member {
public:
    Member() {
        m = new int();
    }
    ~Member() {
        delete m;
        std::cout << "member" << std::endl;
    }   
    private:
    int* m;

};
class A {
public: 
    virtual void foo() {
        std::cout << "foo" << std::endl;
    }   
};
class B: public A { 
public:
    void foo() {
        std::cout << "b foo" << std::endl;
    }
    private:
    Member m;
};

int main() {
       A* x = new B();
       x->foo();
       delete x;
}  
6. C++11,14了解吗,只了解C++11
7. 拷贝构造函数使用场景有哪些?
8. 左值和右值概念,一般什么样的东西会是一个右值?举一个右值的例子
9. STL中map和unordered_map 区别?
10. select, poll, epoll对比
11. 线程间同步方法
12. 哈希表介绍一下,冲突解决
13. 二叉搜索树结构,怎么证明二叉搜索树的中序遍历是有序的,证明一下
算法题:
1. 判断树是否为一个二叉搜索树(遍历写出非递归,在一个while循环里就能判断出来是否有序,不需要其他的循环,要求15分钟之内写完)
2.  数组中出现频率最高的K个数  (要求12分钟分钟之内写完)
第一个算法题不难,但是写了一半面试官就不让写了,说结构太乱,代码风格不行,不易理解,被怼了好久。
第二个题我先说了下思路,感觉说的思路没问题,不知道是不是面试官听错了,又被怼一顿。
面试官说没看到我的一点代码能力,如果我能把第二题写的很好的话就帮我推二面,写不好就算了。
然后写第二个题时压力特别大,最后写的也一般(代码不够规范,for循环里写了两个if判断),用面试官的话来说就是很不漂亮,给我两分钟就修改,修改了之后他说还行,最后他也帮忙推了二面。
算法题并不难,但是就是有时间限制,还特别注重代码规范,之前写算法题从来没注重过这种东西,弄的很混乱,然后面试官还会给压力,搞得很焦虑🤣

二面(5分钟之后):
  1. 实习,项目介绍
  2. 面试官应该之前没看过我简历,我说用C++不会Go,面试官很惊讶🤣
  3. hash解决冲突方式
  4. 链地址法如何实现,怎么设计,数据结构是什么样的,链表节点时什么样的,节点里的val是什么类型
  5. 两个队列实现栈
  6. 算法题:
    // 一个先递增后递减序列,找出中间增减趋势改变的数




#字节跳动##实习##C++工程师##面经#
全部评论
堆排12分钟写完……得多熟练啊
点赞 回复 分享
发布于 2020-05-31 21:18
楼主三面了吗
点赞 回复 分享
发布于 2020-04-17 09:57
请问怎么投递的?直接官网投递嘛?
点赞 回复 分享
发布于 2020-04-11 16:33
我有个问题是 组合类 它内部成员的析构函数应该是会被第一个处理的吧 所以在A添加虚析构函数 应该不影响 Member m 的析构吧? 所以 没有发生内存泄漏? orz 我个菜鸡 不会
点赞 回复 分享
发布于 2020-04-11 14:49
二面算法感觉是旋转求组的查找。
点赞 回复 分享
发布于 2020-04-11 02:03

相关推荐

09-29 00:03
门头沟学院 Java
点赞 评论 收藏
分享
10-13 13:42
门头沟学院 Java
点赞 评论 收藏
分享
评论
3
53
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务