13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

百度不问我项目,全程基础拷打,真扎心!

大家好,我是小林。

今天分享一位同学百度实习一面的面经,技术栈是 C++,由于项目没什么亮点,所以大部分内容都是在问 C++ 的问题,没怎么问项目问题。

操作系统

对new和malloc的理解

new和malloc都是动态内存分配函数。其中,new是C++中的操作符,malloc是C语言中的函数。new会调用对象的构造函数,而malloc不会。使用new可以简化代码,并且更加类型安全。

补充:

new和malloc区别:

new是在内存上哪一块去分配的内存

补充:

new所申请的内存区域在C++中称为自由存储区。很多编译器的new/delete都是以malloc/free为基础来实现的,所以通常都是借由堆实现来实现自由存储,这时候就可以说new所申请的内存区域在堆上。

如果new内存失败了会是怎么样?

会抛出std::bad_alloc异常。

补充:

如果加上std::nothrow关键字,A* p = new (std::nothrow) A;,new 就不会抛出异常而是会返回空指针。

析构函数为什么通常是会做成一个虚函数呢

如果一个类有虚函数,就应该为其定义一个虚析构函数。这是因为在使用delete操作符释放一个指向派生类对象的基类指针时,如果基类的析构函数不是虚函数,那么只会调用基类的析构函数,而不会调用派生类的析构函数,这样就会导致内存泄漏和未定义行为的问题。通过将析构函数定义为虚函数,可以确保在释放派生类对象时,先调用派生类的析构函数,再调用基类的析构函数,从而避免内存泄漏和未定义行为的问题。

线程和进程有什么区别

进程是程序在操作系统中的一次执行过程,它拥有独立的地址空间和系统资源。线程是进程中的一个执行单元,同一进程内的多个线程共享相同的地址空间和系统资源。

补充:

右值引用有什么作用

没用过

补充:

智能指针

智能指针是C++中的一种特殊指针,它是一个对象,用来管理另一个指针所指向的对象的生命周期。智能指针可以自动地分配和释放内存,避免手动管理内存的麻烦和出错风险。

C++标准库提供了三种智能指针:

在哪些场景下会应用智能指针

我自己是在在动态内存管理中,使用智能指针可以避免手动管理内存的麻烦和出错风险。

如果遇到内存泄漏这种问题,你一般是怎么去解决

打断点定位然后做处理

后来思考对方应该是想让我回答这种处理措施⬇️

class中缺省的函数

没关注

补充:

在C++中,如果一个类没有显式地定义「构造函数、析构函数、拷贝构造函数、赋值运算符重载函数」,那么编译器会自动生成这些函数,这些函数被称为缺省函数。

sort函数内部是什么

sort函数内部使用快速排序算法实现,它的时间复杂度为O(nlogn),是一种非常高效的排序算法。

快排的原理

  1. 选择一个基准元素。
  2. 将小于等于基准元素的元素移动到数组左边,大于基准元素的元素移动到数组右边,这个过程称为划分。
  3. 递归地对划分后的左右两个子序列进行排序。

但是仔细想想还可以继续回答⬇️

在实际实现中,sort函数还有一些优化,例如:

为什么选快排

默认它的分布是比较随机的那种分布,然后快排在比较随机的分布上,表现的比较好,速度比较快

多线程锁是什么

多线程锁是一种用来保护共享资源的机制。在多线程编程中,如果多个线程同时访问同一个共享资源,可能会发生竞态条件(Race Condition),导致程序的行为出现未定义的情况。为了避免这种情况的发生,可以使用多线程锁来保护共享资源。

多线程锁的基本思想是,在访问共享资源之前先获取锁,访问完成之后再释放锁。这样可以保证同一时刻只有一个线程可以访问共享资源,从而避免竞态条件的发生。

常见的多线程锁包括互斥锁、读写锁、条件变量等。其中,互斥锁用于保护共享资源的访问,读写锁用于在读多写少的情况下提高并发性能,条件变量用于线程之间的同步和通信。

mysql的事务是什么

在数据库中,事务(Transaction)是一组操作单元,这些操作单元要么全部执行成功,要么全部执行失败。事务是保证数据库一致性的重要机制之一,它可以将一系列的操作看作一个整体,从而保证数据库的完整性和正确性。

事务具有四个特性,即ACID:

MySQL是一种常见的关系型数据库,支持事务的机制。在MySQL中,事务可以

通过使用事务控制语句(Transaction Control Statements)来进行管理,包括以下三个语句:

在MySQL中,事务默认是关闭的,需要通过设置autocommit参数为0来启用事务。启用事务后,可以通过执行SQL语句来进行事务操作,

TCP连接中间会有什么操作

在TCP连接中,客户端和服务器之间会进行以下操作:

需要注意的是,在TCP连接中可能会出现丢包、拥塞等情况,需要进行相应的处理,例如重传丢失的数据包、调整发送窗口大小等。

算法

表内指定的区间反转

反问

部门业务;技术栈情况

面试总结

感觉:

不足之处:


网页名称:百度不问我项目,全程基础拷打,真扎心!
当前链接:http://cdbrznjsb.com/article/cdehgdj.html

其他资讯

让你的专属顾问为你服务