缺点:
1.K是事先给定的,但非常难以选定;2.初始聚类中心的选择对聚类结果有较大的影响。
点评:
考察的内容是常用数据分析方法,做数据分析一定要理解数据分析算法、应用场景、使用过程、以及优缺点。
三、根据要求写出SQL
表A结构如下:
Member_ID(用户的ID,字符型)
Log_time(用户访问页面时间,日期型(只有一天的数据))
URL(访问的页面地址,字符型)
要求:
提取出每个用户访问的第一个URL(按时间最早),形成一个新表(新表名为B,表结构和表A一致)
createtableBasselectMember_ID,min(Log_time),URLfromAgroupbyMember_ID;
点评:
SQL语句,简单的数据获取能力,包括表查询、关联、汇总、函数等。
四、销售数据分析
以下是一家B2C电子商务网站的一周销售数据,该网站主要用户群是办公室女性,销售额主要集中在5种产品上,如果你是这家公司的分析师,
a)从数据中,你看到了什么问题?
你觉得背后的原因是什么?
b)如果你的老板要求你提出一个运营改进计划,你会怎么做?
表如下:
一组每天某网站的销售数据
a)从这一周的数据可以看出,周末的销售额明显偏低。
这其中的原因,可以从两个角度来看:
站在消费者的角度,周末可能不用上班,因而也没有购买该产品的欲望;站在产品的角度来看,该产品不能在周末的时候引起消费者足够的注意力。
b)针对该问题背后的两方面原因,我的运营改进计划也分两方面:
一是,针对消费者周末没有购买欲望的心理,进行引导提醒消费者周末就应该准备好该产品;二是,通过该产品的一些类似于打折促销等活动来提升该产品在周末的人气和购买力。
点评:
数据解读能力,获取数据是基本功,仅仅有数据获取能力是不够的,其次是对数据的解读能力。
五、用户调研
某公司针对A、B、C三类客户,提出了一种统一的改进计划,用于提升客户的周消费次数,需要你来制定一个事前试验方案,来支持决策,请你思考下列问题:
a)试验需要为决策提供什么样的信息?
c)按照上述目的,请写出你的数据抽样方法、需要采集的数据指标项,以及你选择的统计方法。
a)试验要能证明该改进计划能显著提升A、B、C三类客户的周消费次数。
b)根据三类客户的数量,采用分层比例抽样;
需要采集的数据指标项有:
客户类别,改进计划前周消费次数,改进计划后周消费次数;
选用统计方法为:
分别针对A、B、C三类客户,进行改进前和后的周消费次数的,两独立样本T-检验(two-samplet-test)。
点评:
业务理解能力和数据分析思路,这是数据分析的核心竞争力。
综上所述:
一个合格的数据分析应该具备统计学基础知识、数据分析方法、数据获取、数据解读和业务理解、数据分析思想几个方面能力,即将成为数据分析师的亲们,你们准备好了吗?
2、从腾讯(数据挖掘方向)笔试题目看技术储备
笔试内容:
1.二叉树遍历:
已知中序遍历顺序以及前序遍历顺序,求后序遍历顺序
2.SQL语句:
找出QQset中最小的QQ号码
3.encodeURI&URL传播的转义结果
4.36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
5.Windows/Linux下判断远程地址为某主机监听的某端口是都开放的命令是?
6.html网站cookie
7.cookie功能
8.哈希冲突
9.哪些http方法对于服务端和用户是安全的
10.二维数组内存地址计算
11.附加题:
推导线性最小二乘法过程
12.附加题:
概率计算(这个相当简单啦)
13.模型过拟合与哪些因素有关,写出理由
3、从XX(数据挖掘工程师)笔试题目看技术储备
一.简答题
1.new和malloc的区别。
2.hash冲突是指什么?
怎么解决?
给两种方法,写出过程和优缺点。
3.命中的概率是0.25,若要至少命中一次的概率不小于0.75,则至少需要几次?
二.算法设计题
1.用C/C++写一个归并排序。
数据结构为structNode{intv;Node*next};
接口为Node*merge_sort(Node*);
2.设计S型层次遍历树的算法,比如根节点是第一层,第二层从左至右遍历,第三层从右至左遍历,第四层再从左至右遍历,以此类推。
举例:
应依次输出123654789。
3.一个url文件,每行是一个url地址,可能有重复。
(1)统计每个url的频次,设计函数实现实现。
(2)设有10亿url,平均长度是20,现在机器有8G内存,怎么处理,写出思路。
三.系统设计题
自然语言处理中的中文分词问题,前向最大匹配算法(FMM)。
注:
题目举例说明了FMM的基本思想。
(1)设计字典的数据结构structdictnote。
(2)用C/C++实现FMM,可选接口为
intFMM(vectoriLetters,dictnode*iRoot,vector*oResults);
其中iLetters为待分词的句子,比如{“小”,“明”,“今”,“天”,“买”,“了”,“i”,“p”,“o”,“n”,“e”,“6”},
iRoot是字典,oResults保存输出结果,即分词的位置。
也可以自己设计接口。
(3)收集了一些手机品牌的字典,如{iphone,诺基亚}。
现在要求查找包含这些手机品牌的网页,比如包含iphone6,诺基亚9973等。
怎么修改FMM实现这个功能,可以写伪代码。
4、从搜狐(数据挖掘算法工程师)笔试题目看技术储备
笔试
1,类的继承
2,资源互斥下的死锁
3,一维数组,元素为指针,指针指向一个参数为Int,返回值为int的函数
4,进程间的通信方式
5,Const标志符常量一定要?
6,String的普通构造函数,拷贝构造函数,赋值函数,析构函数
7,Strcpy函数
8,N个不同数的全排列,打印所有全排列
9,Sizeof(charname[]=”hello”)
10,继承的转换(子类可以转换成基类,基类不能转换成子类,多继承下同一子类的基类间不能相互转换)
5、从网易(数据挖掘研究员)笔试题目看技术储备
笔试
1,字符串匹配的算法复杂度(主串N,字串M)N+M
2,排序算法的稳定性(快速排序为非稳定)
3,平衡二叉树的插入
4,20个亿整数的两个集合a与b,求a与b的交集,内存为4Gb
5,在N个无序数中找K个最小值
6,页面文件的逻辑地址位(8个1024字放内32帧内存里)
7,计算机网络各层应用连接
8,哪一种模式不关心算法
AbstractFactory:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
(使用得非常频繁。
)
Adapter:
将一个类的接口转换成客户希望的另外一个接口。
Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Bridge:
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
Builder:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
ChainofResponsibility:
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
Command:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
Composite:
将对象组合成树形结构以表示“部分-整体”的层次结构。
它使得客户对单个对象和复合对象的使用具有一致性。
Decorator:
动态地给一个对象添加一些额外的职责。
就扩展功能而言,它比生成子类方式更为灵活。
Facade:
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
FactoryMethod:
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。
FactoryMethod使一个类的实例化延迟到其子类。
Flyweight:
运用共享技术有效地支持大量细粒度的对象。
Interpreter:
给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
Iterator:
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
Mediator:
用一个中介对象来封装一系列的对象交互。
中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
Memento:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
这样以后就可将该对象恢复到保存的状态。
Observer:
定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
Prototype:
用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
Proxy:
为其他对象提供一个代理以控制对这个对象的访问。
Singleton:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
State:
允许一个对象在其内部状态改变时改变它的行为。
对象看起来似乎修改了它所属的类。
Strategy:
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
本模式使得算法的变化可独立于使用它的客户。
TemplateMethod:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
Visitor:
表示一个作用于某对象结构中的各元素的操作。
它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作
9,数据库系统的两种语言(一种用于定义数据库模式;另一种用于表达数据的查询和更新)
10,数据库的连接运算
11,建立索引的原则
在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
不应该创建索引的的这些列具有下列特点:
第一,对于那些在查询中很少使用或者参考的列不应该创建索引。
这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。
相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
第二,对于那些只有很少数据值的列也不应该增加索引。
这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。
增加索引,并不能明显加快检索速度。
第三,对于那些定义为text,image和bit数据类型的列不应该增加索引。
这是因为,这些列的数据量要么相当大,要么取值很少。
第四,当修改性能远远大于检索性能时,不应该创建索引。
这是因为,修改性能和检索性能是互相矛盾的。
当增加索引时,会提高检索性能,但是会降低修改性能。
当减少索引时,会提高修改性能,降低检索性能。
因此,当修改性能远远大于检索性能时,不应该创建索引。
12,事务的定义与特点,事务隔离的级别
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。
这些操作要么都做,要么都不做,是一个不可分割的工作单位。
通过事务,SQLServer能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。
事务的特性(ACID特性)
A:
原子性(Atomicity),事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
B:
一致性(Consistency),事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
一致性与原子性是密切相关的。
C:
隔离性(Isolation),一个事务的执行不能被其他事务干扰。
D:
持续性/永久性(Durability),一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
未授权读取(允许脏读取,但不允许更新丢失),授权读取(允许不可重复读取,但不允许脏读取),可重复读取(禁止不可重复读取和脏读取,但是有时可能出现幻影数据)和序列化(事务序列化执行,不能并发执行)
13,专业题一数据挖掘的步骤
14,Pca的概念和处理过程(主成分分析)
15,K