2015百度校招--机器学习、数据挖掘工程师笔试题

来源:互联网 发布:名图轮毂17寸轮毂数据 编辑:程序博客网 时间:2024/06/05 07:27

一、简答题
1.【c/c++】Const作用域变量、函数、类分别有什么特性
变量: 表示变量的值不可变

函数:
const修饰函数参数
a.传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const int Var);
b.参数指针所指内容为常量不可变
void function(const char* Var);
c.参数指针本身为常量不可变(也无意义,因为char* Var也是形参)
void function(char* const Var);
d.参数为引用,为了增加效率同时防止修改。修饰引用参数时:
void function(const Class& Var); //引用参数在函数内不可以改变
void function(const TYPE& Var); //引用参数在函数内为常量不可变

类:这里写图片描述
2、内存分配中堆和栈的区各指什么?在什么时候会分配?
栈是属于进程管理的,大小相对固定,规模较小,一旦操作系统为程序分配了栈后就不管了,操作系统将其看做进程的一部分,栈的性质是先进后出,后进先出;
堆属于系统维护的,进程可以申请的额外内存空间,访问方式是自由的
栈,是由编译器自动分配和释放的,主要是函数体的地址,参数和局部变量,静态变量不包含其中,操作方式类似于数据结构中的栈。
堆,是由程序员手动完成申请和释放的,像malloc和new
3、如何判断训练出的模型过拟合?
训练集预测效果好,测试集预测效果差,则为过拟合
4.malloc和new的区别是什么?
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管理动态内存。
5、new可以认为是malloc加构造函数的执行。new出来的指针是直接带类型信息的。而malloc返回的都是void指针
5. hash冲突是指什么?怎么解决?给两种方法,写出过程和优缺点
二。算法与程序设计题
1.链接:https://www.nowcoder.com/questionTerminal/07c8ce915e234d528b5afa32e10203e6?source=relative
来源:牛客网
假设有一个数组,里面有10个元素 inta[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。请写一个算法,得到a数组的一个随机排列。要求时间复杂度尽量小,可以使用random函数。例如输出的随机序列可以是:3 6 2 4 5 1 9 8 0.
感觉python比较简单:

import randomtry:   inta=[0,1,2,3,4,5,6,7,8,9]   random.shuffle(inta)   print intaexcept:    pass

2.对于logistic regession问题(prob(t|x)=1/(1+exp(w*x+b))且label y=0或1)请给出loss function和权重w的更新公式及推导。
这里写图片描述

三。系统设计题
1、假设我们有三个箱子,分别是红色,蓝色和绿色。在红色箱子中有3个苹果,4个橘子,3个柠檬,在蓝色箱子中有1个苹果,1个橘子和0个柠檬,在绿色箱子中有3个苹果,3个橘子和4个柠檬。如果我们选择箱子的概率是红色0.2,蓝色0.2和绿色0.6,并且选择一个箱子后,以均匀的概率移除一个水果,那么移除苹果的概率是多少?请给出步骤。(10分)
2、如果我们移除的是橘子,那么这个橘子来自绿色箱子的概率是多少?

  1. 选中红色箱子中的苹果:0.2*3/(3+4+3)=0.06
    选中蓝色箱子中的苹果:0.2*1/(1+1)=0.1
    选中绿色箱子中的苹果:0.6*3/(3+3+4)=0.18
    上面三个相加:0.06+0.1+0.18=0.34
    2.同理:
    选中红色箱子的橘子:0.2*4/(3+4+3)=0.08
    选中蓝色箱子的橘子:0.2*1/(1+1)=0.1
    选中绿色箱子的橘子:0.6*3/(3+3+4)=0.18
    0.18/(0.08+0.1+0.18)=0.5

参考:https://wenku.baidu.com/view/380d19f751e79b89680226ec.html

阅读全文
0 0
原创粉丝点击