Giter Site home page Giter Site logo

interview's Introduction

##personal interview (个人面试总结)

实习期间研发工程师面试总结

是你在展示,不是一问一答

  • map的实现原理和红黑树(关联容器和顺序容器的区别)
  • vector和map迭代器失效的问题(map需要一个额外的迭代器赋值对象记录下一个位置(erase(it++)),vector则不要在it++,注意erase在for循环中的使用啊 啊)
  • string的三种实现方式
  • 虚函数的实现机制(虚函数表,时间和内存开销),多重继承下的虚函数表
  • 重载的实现原理(函数的改名机制):返回类型+函数名+参数
  • 构造函数不能是虚函数
  • C++ static ,指针和引用
  • strcpy和memcpy的功能和区别是什么?
  • 内存泄露的定位
  • ISO七层简介
  • c++的动态绑定
  • extern修饰符可用于指示C或者C++函数的调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同.
  • Rule of three (析构函数、拷贝构造函数和重载赋值函数),如果成员有指针,那么多个指针指向同一块内存,防止浅拷贝在析构时同一块内存区将被释放多次。
  • 为什么要使用构造函数初始化表
  • STL中存储auto_ptr,不支持拷贝赋值,转移所有权,p1=p2后p2失效
  • new的时候虚拟内存和物理内存
  • vector和map使用erase迭代器失效的问题(v: it=v.erase; m: m.erase(it++))
  • sizeof和strlen的区别,(sizeof编译时,strlen运行时)
  • 快排,桶排序,基数排序
  • 稳定排序和不稳定排序
  • 反转单词,两次翻转解决;先反转单词,再逆序输出
  • new和malloc的区别,这部分仔细看下,主要区别:
  • C++内存分配,linux内存分配,虚拟内存①new 是c++中的操作符,malloc是c 中的一个函数
  • new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free 也不会调用析构函数
  • 服务端常用游戏框架,skynet,U3D,Polemo,KBengine,Cocos2d
  • sed,awk的使用
  • STL内存分配和traits技法
  • C++四大类型强制转换
  • 了解boost库
  • Linux进程调度采用的是抢占式多任务处理(优先级调度),所以进程之间的挂起和继续运行无需彼此之间的协作。
  • SYN Flood攻击,TCP三次握手的漏洞:修改半连接时间;IP cookie;更改DNS解析获得新的IP
  • 读写锁和互斥锁
  • 协程,CAS无锁队列,Retry_loop(可以理解为锁的粒度变小,只锁head和tail)
  • strlen的递归实现和strcpy的代码
  • 搜索引擎的工作原理
  • 动态链接库,布隆过滤器
  • 内存池的实现
  • KV存储系统,redis
  • cache的典型实现:双向链表套map,hash表是用来访问数据的,因为hash的查找速度快,O(1)。双向链表是用来记录最近访问情况的,因为Hash做不到排序。

interview's People

Contributors

tachone avatar

Stargazers

吴宇哲 avatar

Watchers

James Cloos avatar EVdw1zU avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.