某日小二参加XXX科技公司的C工程师开发岗位5面: 面试官:struct和class有什么区别? 小二:在C中,struct和class的唯一区别是默认的访问控制。struct默认的成员是public的,而class的默认成员是private的。 面试官:struct、class和union有哪些区别? 小二:union和struct、class在内存布局上不同。union实例的所有成员共享一块内存,这块内存的大小等同于union中成员尺寸最大的一个。 面试官:你能列举一下union适合使用的场合吗? 小二:额。。(我哪知道啊,从来没用过。。) 面试官:好的,回去等通知吧。 对于这三个关键...

  eOFUwSKoeCPe   2023年11月02日   67   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位6面: 面试官:如何在堆上申请一块内存? 二师兄:常用的方法有malloc,new等。 面试官:两者有什么区别? 二师兄:malloc是向操作系统申请一块内存,这块内存没有经过初始化,通常需要使用memset手动初始化。而new一般伴随三个动作,向操作系统申请一块内存,并执行类型的默认构造函数,然后返回类的指针。 面试官:嗯,那你知道calloc和realloc吗? 二师兄:calloc比malloc多做了一步,就是把申请的内存初始化成0。而realloc则可以改变当前指针所指向的内存块的大小。 面试官:好的。那么你知道这些api/操作符失败会发...

  eOFUwSKoeCPe   2023年11月02日   35   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第7面: 面试官:C中,static和const的关键字有哪些用法? 二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静态局部变量,在第一次访问的时候初始化。3.内类修饰成员函数和成员变量,此函数或变量由类持有,而非类的对象持有。 二师兄:const关键字主要也有三个用途:1.修饰函数参数,则在函数内部不可以修改此参数。2.修饰类的成员方法,表面此方法不会更改类对象的任何数据。3.修饰变量,表明变量不可以被修该。 面试官:现在两个指针,一个是constint,另一...

  eOFUwSKoeCPe   2023年11月02日   43   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第8面: 面试官:C中,函数的参数应该传值还是传引用? 二师兄:要看参数的用途。如果是出参,必须传引用。如果是入参,主要考虑参数类型的大小,来决定传值还是传引用。 面试官:为什么不使用指针? 二师兄:传指针也称之为传引用(passbyrefereence)。但是在C中不推荐使用指针,因为指针需要判断是否位空,而引用则无需担心。 面试官:入参传值还是传引用有什么标准吗? 二师兄:没有标准吧。一般参数类型大小大于16字节(64位操作系统)时,传引用效果要好于传值。 面试官:为什么? 二师兄:因为传值相当于拷贝构造,当变量的类型尺寸大于16字节时,拷贝...

  eOFUwSKoeCPe   2023年11月02日   56   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第9面: 面试官:C中,设计一个类要注意哪些东西? 二师兄:设计一个类主要考虑以下几个方面:1.面向对象的封装、继承及多态。2.bigthree或者bigfive。3.运算符和函数重载、静态成员、友元、异常处理等相关问题。 面试官:请介绍一下面向对象的三个特性。 二师兄:封装是将类的函数和数据封装起来,外部不能直接访问类的数据,而是需要通过方法访问数据。继承是指一个类可以继承另一个类的属性和方法。多态是指一个对象可以表现出多种形态。 面试官:请问多态是如何实现的? 二师兄:多态的是通过父类的指针或引用指向子类的对象实现的。在对象中维护一个虚指针(...

  eOFUwSKoeCPe   2023年11月02日   48   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第10面: 面试官:了解sizeof操作符吗? 二师兄:略微了解(不就是求大小的嘛。。) 面试官:请讲以下如何使用sizeof? 二师兄:sizeof主要是求变量或者类型的大小。直接使用sizeof(type)或sizeof(var)即可。 面试官:嗯。sizeof(int)、sizeof(int)和sizeof(int[4])各返回什么? 二师兄:前两者的返回值相等。在32位操作系统中返回4,64位操作系统中返回8。sizeof(int[4])返回16,是因为sizeof运算时数组不会退化为指针。 面试官:如果一个intp=nullptr,那么...

  eOFUwSKoeCPe   2023年11月02日   87   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第11面: 面试官:在C中,你都知道都哪些运算符? 二师兄:啥?运算符?+-/=这些算吗? 面试官:嗯,还有其他的吗? 二师兄:当然还有,+=,-=,=,/=,,还有逻辑运算,位运算等。 面试官:好的。那你知道这些运算的优先级吗? 二师兄:(面试官傻逼吧,这谁记得住)记不住了,一般我都会加括号来表达我的意思。 面试官:好的。那你知道下面这段程序会输出什么吗? include<iostream> intmain(intargc,charconstargv[]) { inti=0; std::cout<<i+i<&lt...

  eOFUwSKoeCPe   2023年11月02日   112   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第12面: 面试官:了解位运算吗? 二师兄:了解一些。(我很熟悉) 面试官:请列举以下有哪些位运算? 二师兄:按位与(&)、按位或(|)、按位异或(^),按位取反()、左移(<<)和右移(>>)。 面试官:好的。那你知道位运算有什么优势吗? 二师兄:优势主要有两点:1.速度快。2.节省寄存器/内存空间。 面试官:在C中,如何处理int型负数最高位(是1)的左移或者右移? 二师兄:不同编译器处理的方法不同。此操作在C中属于未定义的行为。所以不要使用带符号的整数参加位运算。 面试官:如何判断一个数是不是2的整数次方? ...

  eOFUwSKoeCPe   2023年11月02日   37   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第13面: 面试官:什么是RAII? 二师兄:RAII是ResourceAcquisitionIsInitialization的缩写。翻译成中文是资源获取即初始化。 面试官:RAII有什么特点和优势? 二师兄:主要的特点是,在对象初始化时获取资源,在对象析构时释放资源。这种技术可以避免资源邪路或内存泄漏,提高程序的健壮性和可维护性。 面试官:使用RAII可以做哪些事情? 二师兄:主要可以管理动态分配的内存而不需要手动申请和释放,管理锁不需要手动加锁和解锁,管理句柄不需要手动打开和关闭。 面试官:你知道有哪些C标准库中已经存在的类型使用了RAII技...

  eOFUwSKoeCPe   2023年11月02日   53   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第14面: 面试官:在C中,有哪些可执行体? 二师兄:可执行体? 面试官:也就是可调用对象。 二师兄:让我想一想。函数、函数指针、类的静态方法、类的成员方法、仿函数、lambda表达式。 面试官:能说一说他们之间有什么区别吗? 二师兄:好的。函数是一段代码,执行特定任务,接受参数并返回值。 intadd(inta,intb) { returna+b; } 二师兄:函数指针是指向函数的指针。 intadd(inta,intb) { returna+b; } usingaddptr=int()(int,int); addptrptr=&am...

  eOFUwSKoeCPe   2023年11月02日   72   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第15面: 面试官:了解auto关键字吗? 二师兄:嗯,了解一些(我很熟悉)。 面试官:说一说auto的用法吧? 二师兄:auto主要是为了编译器进行类型推导。比如: autoi=42; //i被推导位int型 std::vector<int>vi; for(autoit=vi.cbegin();it!=vi.cend();it) { std::cout<<it<<std::endl; } //迭代器的类型又臭又长 autol_fun=[](inta,intb){returna+b;} //lambda的类型...

  eOFUwSKoeCPe   2023年11月02日   67   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第16面: 面试官:什么是左值,什么是右值? 二师兄:简单来说,左值就是可以使用&符号取地址的值,而右值一般不可以使用&符号取地址。 inta=42; //a是左值,可以&a intp=&a; intp=&42; //42是右值,无法取地址 二师兄:一般左值存在内存中,而右值存在寄存器中。 inta=42,b=1024; decltype(a+b); //类型为右值,a+b返回的值存在寄存器中 decltype(a+=b); //类型为左值,a+=b返回的值存储在内存中 二师兄:严格意义上分,右...

  eOFUwSKoeCPe   2023年11月02日   78   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第17面: 面试官:聊一聊指针? 二师兄:好的。 面试官:你觉得指针本质上是什么? 二师兄:这要从内存地址开始说起了。如果有一块容量是1G的内存,假设它的地址是从0x00000000到0x3fffffff,每一个字节都对应一个地址。当我们声明一个变量并初始化它时: inta=42; 二师兄:操作系统会分配一块容量为4(sizeof(int))的地址,这块内存的首地址是0x00001000(假设),结束地址是0x00001003,在申请的这4个字节上放入42。当我们对这个变量取地址时, inta=42; intp=&a; 二师兄...

  eOFUwSKoeCPe   2023年11月02日   53   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第18面: 面试官:std::string用过吧? 二师兄:当然用过(废话,C程序员就没有没用过std::string的)。 面试官:std::string("hello")+"world"、"hello"+std::string("world")和std::string("hello")+std::string("world")的结果是什么?为什么? 二师兄:前者和后者的结果都是std::string的对象,内容是“helloworld\0”,而中间的这个表达式无法通过编译。原因是std::string重载了operator+(constcha...

  eOFUwSKoeCPe   2023年11月02日   70   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第19面: 面试官:什么是智能指针? 二师兄:智能指针是C11引入的类模板,用于管理资源,行为类似于指针,但不需要手动申请、释放资源,所以称为智能指针。 面试官:C11引入了哪些智能指针? 二师兄:三种,分别是shared_ptr、unique_ptr、和weak_ptr。 面试官:说一说三种指针的特征及用途。 二师兄:好的。shared_ptr使用了引用计数(usecount)技术,当复制个shared_ptr对象时,被管理的资源并没有被复制,而是增加了引用计数。当析构一个shared_ptr对象时,也不会直接释放被管理的的资源,而是将引用计数...

  eOFUwSKoeCPe   2023年11月02日   87   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第20面: 面试官:C中支持哪些类型转换? 二师兄:C支持C风格的类型转换,并在C11引入新的关键字规范了类型转换。 二师兄:C11引入四种新的类型转换,分别是static_cast、dynamic_cast、const_cast、和reinterpret_cast。 二师兄:static_cast用途最广泛,除了后面三种类型转换外,其他的类型转换都能使用static_cast完成。 二师兄:dynamic_cast主要用于运行时的从父类指针向子类指针转换,如果转换不成功则返回nullptr。 include<iostream> ...

  eOFUwSKoeCPe   2023年11月02日   99   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第21面: 面试官:用过STL吗? 二师兄:(每天都用好吗。。)用过一些。 面试官:你知道STL是什么? 二师兄:STL是指标准模板库(StandardTemplateLibrary),是C区别于C语言的特征之一。 面试官:那你知道STL的六大部件是什么? 二师兄:分别是容器(container)、迭代器(iterator)、适配器(adaptor)、分配器(allocator)、仿函数(functor)和算法(algorithm)。 面试官:那你知道有哪些容器吗? 二师兄:STL中容器的数量比较多,按照类型可以分为顺序容器和关联容器。 二师兄:...

  eOFUwSKoeCPe   2023年11月02日   25   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第22面:(二师兄好苦逼,节假日还在面试。。。) 面试官:C的继承了解吗? 二师兄:(不好意思,你面到我的强项了。。)了解一些。 面试官:什么是虚函数,为什么需要虚函数? 二师兄:虚函数允许在基类中定义一个函数,然后在派生类中进行重写(override)。 二师兄:主要是为了实现面向对象中的三大特性之一多态。多态允许在子类中重写父类的虚函数,同样的函数在子类和父类实现不同的形态,简称为多态。 面试官:你知道override和finial关键字的作用吗? 二师兄:override关键字告诉编译器,这个函数一定会重写父类的虚函数,如果父类没有这个虚函...

  eOFUwSKoeCPe   2023年11月02日   40   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第23面: 面试官:vector了解吗? 二师兄:嗯,用过。 面试官:那你知道vector底层是如何实现的吗? 二师兄:vector底层使用动态数组来存储元素对象,同时使用size和capacity记录当前元素的数量和当前动态数组的容量。如果持续的push_back(emplace_back)元素,当size大于capacity时,需要开辟一块更大的动态数组,并把旧动态数组上的元素搬移到当前动态数组,然后销毁旧的动态数组。 面试官:你知道新开辟的动态数组的容量是就数组的多少倍比较合适? 二师兄:这个值在不同的编译器上不是固定的。MSVC是1.5,...

  eOFUwSKoeCPe   2023年11月02日   31   0   0 C++

某日二师兄参加XXX科技公司的C工程师开发岗位第24面: 面试官:list用过吗? 二师兄:嗯,用过。 面试官:请讲一下list的实现原理。 二师兄:std::list被称为双向链表,和C中手写双向链表本质上没有大的区别。list对象中有两个指针,一个指向上一个节点(node),一个指向下一个节点(node)。 二师兄:与手写双向链表不同的是,list中有一个basenode,此node并不存储数据,从C11开始,此node中包含一个size_t类型的成员变量,用来记录list的长度。 二师兄:所以说从C11开始,size()的时间复杂度是O(1),在此之前是O(N)。 面试官:是每个nod...

  eOFUwSKoeCPe   2023年11月02日   74   0   0 C++
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~