当前位置:   article > 正文

【9】机器学习算法面试八股_机器学习面试八股文

机器学习面试八股文

151在程序里面智能指针的名字是啥?

一个是shared_ptr允许多个指针指向同一个对象;
一个是unique_ptr独占所指向的对象;
还有一种伴随类weak_ptr他是一种弱引用, 指向shared_ptr所指向的对象。

152new,malloc区别

1).malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
2).对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
3).因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
4).C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存

153虚函数和纯虚函数的区别

含有纯虚函数的类称为抽象类,只含有虚函数的类不能称为抽象类。
虚函数可以直接被使用,也可以被子类重载以后以多态形式调用,
而纯虚函数必须在子类中实现该函数才可使用,因为纯虚函数在基类中只有声明而没有定义。虚函数必须实现,对虚函数来说父类和子类都有各自的版本。

154纯虚函数怎么定义,写一个出来

纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
纯虚函数是一种特殊的虚函数,它的一般格式如下:
class <类名>
{
virtual <类型><函数名>(<参数表>)=0;

};

155函数后面接const是什么意思?

这是把整个函数修饰为const,意思是“函数体内不能对成员数据做任何改动”。如果你声明这个类的一个const实例,那么它就只能调用有const修饰的函数

156函数指针

指向函数的指针 如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。

157c++的一些库吗?

标准库
C++标准库,包括了STL容器,算法和函数等。
C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
Standard Template Library:标准模板库
C POSIX library:POSIX系统的C标准库规范
ISO C++ Standards Committee:C++标准委员会
框架
C++通用框架和库
Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合
ASL:Adobe源代码库提供了同行的评审和可移植的C++源代码库。
Boost:大量通用C++库的集合。
BDE:来自于彭博资讯实验室的开发环境。
Cinder:提供专业品质创造性编码的开源开发社区。
Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。
Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。
EASTL:EA-STL公共部分
ffead-cpp:企业应用程序开发框架
Folly:由Facebook开发和使用的开源C++库
JUCE:包罗万象的C++类库,用于开发跨平台软件
libPhenom:用于构建高性能和高度可扩展性系统的事件框架。
LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO
LibU:C语言写的多平台工具库
Loki:C++库的设计,包括常见的设计模式和习语的实现。
MiLi:只含头文件的小型C++库
openFrameworks :开发C++工具包,用于创意性编码。
Qt:跨平台的应用程序和用户界面框架
Reason:跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。
ROOT:具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。
STLport:是STL具有代表性的版本
STXXL:用于额外的大型数据集的标准模板库。
Ultimate++:C++跨平台快速应用程序开发框架
Windows Template Library:用于开发Windows应用程序和UI组件的C++库
Yomm11:C++11的开放multi-methods.

158Python中的各种锁:

一、全局解释器锁(GIL)
1、什么是全局解释器锁
每个CPU在同一时间只能执行一个线程,那么其他的线程就必须等待该线程的全局解释器,使用权消失后才能使用全局解释器,即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。GIL的设计简化了CPython的实现,使的对象模型包括关键的内建类型,如:字典等,都是隐含的,可以并发访问的,锁住全局解释器使得比较容易的实现对多线程的支持,但也损失了多处理器主机的并行计算能力。
2、全局解释器锁的好处
1)、避免了大量的加锁解锁的好处
2)、使数据更加安全,解决多线程间的数据完整性和状态同步
3、全局解释器的缺点
多核处理器退化成单核处理器,只能并发不能并行。
4、GIL的作用:
多线程情况下必须存在资源的竞争,GIL是为了保证在解释器级别的线程唯一使用共享资源(cpu)。
二、同步锁
1、什么是同步锁?
同一时刻的一个进程下的一个线程只能使用一个cpu,要确保这个线程下的程序在一段时间内被cpu执,那么就要用到同步锁。
2、为什么用同步锁?
因为有可能当一个线程在使用cpu时,该线程下的程序可能会遇到io操作,那么cpu就会切到别的线程上去,这样就有可能会影响到该程  序结果的完整性。
3、怎么使用同步锁?
只需要在对公共数据的操作前后加上上锁和释放锁的操作即可。
4、同步锁的所用:
为了保证解释器级别下的自己编写的程序唯一使用共享资源产生了同步锁。
三、死锁
1、什么是死锁?
指两个或两个以上的线程或进程在执行程序的过程中,因争夺资源或者程序推进顺序不当而相互等待的一个现象。
2、死锁产生的必要条件?
互斥条件、请求和保持条件、不剥夺条件、环路等待条件
3、处理死锁的基本方法?
预防死锁、避免死锁(银行家算法)、检测死锁(资源分配)、解除死锁:剥夺资源、撤销进程
四、什么是递归锁?
在Python中为了支持同一个线程中多次请求同一资源,Python提供了可重入锁。这个RLock内部维护着一个Lock和一个counter变量,counter记录了acquire的次数,从而使得资源可以被多次require。直到一个线程所有的acquire都被release,其他的线程才能获得资源。递归锁分为可递归锁与非递归锁。
五、什么是乐观锁?
假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
六、什么是悲观锁?
假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
七、python常用的加锁方式?
互斥锁、可重入锁、迭代死锁、互相调用死锁、自旋锁。

159Linux:ELF的bss段

ELF是Linux系统下的一种可执行可链接文件的格式,而bss段则是用于存放程序中未初始化的全局变量和静态局部变量。

160ip报文经过一个路由器改变哪些字段?

源目的MAC改变,TTL减1

161大小端存储:

• 大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。
• 小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端)

162count(*),count(1)和count(列名)的区别

count(*),count(1)在统计的时候不会忽略Null,count(列名)在统计的时候会忽略Null

  1. 列名为主键,count(列名) 会比count(1) 和count(*) 快;
  2. 多列且没有主键,count(1) 执行会比count(*) 快。
  3. 若表中只有一个字段则count(*)最快。

163排序

链接
在这里插入图片描述

164Python以一定的概率生成某个数

链接

165Python 中列表( List )中的 del,remove,和 pop 等的用法和区别

链接

  1. pop
    value = List.pop(index)
    pop按照索引位置删除元素;
    无参数时默认删除最后一个元素
    返回删除的元素值
  2. remove
    remove 按照值删除,删除单个元素,
    删除首个符合条件的元素,
    返回值为空 None
  3. del
    del 根据索引位置来删除单个值或指定范围内的值
    del是删除引用(变量)而不是删除对象(数据),对象由自动垃圾回收机制(GC)删除
    del List_del_1[1]
    del List_del_2[2:4] # 删除[2,4)索引范围内的值
    del List_del_3

166@property 与 @staticmethod 与 @classmethod 装饰器的介绍与使用@property是python的一种装饰器,是用来修饰方法的。通俗的理解就是:用访问类属性的方式,直接调用类方法

作用:

  1. 可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性
  2. 可以与所定义的属性配合使用,这样可以防止属性被修改。
  3. 对类的私有属性进行操作
    在这里插入图片描述@staticmethod
    普通的类内函数是需要实例化之后才可以调用的,但是 @staticmethod 静态方法无需实例化也可直接调用
    在这里插入图片描述
    @classmethod
    @classmethod 类方法无需实例化也可直接调用。@classmethod装饰器定义的类方法需要传入类参数cls
    在这里插入图片描述

167五大常见Python中错误和异常在这里插入图片描述

  1. 捕获异常try 。。。except。。。else。。。finally
  2. 断言(assert)
  3. 抛出异常(raise)
  4. sys.exc_info()

168python中[0 ]* n与[0 for _ in range(n)]的区别与联系

[0 ]* n与[0 for _ in range(n)]区别:前者是浅拷贝,也就是把一个列表重复了n次,而后者才是创建,深拷贝
浅复制:每一行的改变都会改变其他行。
在这里插入图片描述

169极大似然估计

利用实验结论反推模型参数,这就是“似然”(Likelihood)。
在这里插入图片描述最大似然估计就是:通过真实的实验结果来推测未知的模型的参数,也就是找到一个合理的模型参数,使得实验发生的这个事实存在的概率最该。

170等概率输出0和1

链接

一个随机数发生器,以概率 P 产生0,概率 (1-P) 产生 1,请问能否利用这个随机数发生器,构造出新的发生器,以 1/2 的概率产生 0 和 1 。请写明结论及推理过程。( 注意:这里的 p 相当于是未知的,后文会提到已知 p 的类型,解题思路是不同的 )

在这里插入图片描述
知随机数生成函数f(),返回0的概率是60%,返回1的概率是40%。根据f()求随机数函数g(),使返回0和1的概率是50%,不能用已有的随机生成库函数
Python写法有答案

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/224507
推荐阅读
相关标签
  

闽ICP备14008679号