面试经验

面试经验

腾讯面试题

回复

苗雨佳 发起了问题 1 人关注 0 个回复 1813 次浏览 2018-02-08 09:59 来自相关话题

如果把面试算法的视频搞懂,能不能不用再耗费大量时间刷LeetCode题目?

邹博 回复了问题 2 人关注 1 个回复 3573 次浏览 2017-05-28 13:29 来自相关话题

2016年Web前端面试题目汇总

回复

傲风寒 发起了问题 1 人关注 0 个回复 1946 次浏览 2016-03-23 16:00 来自相关话题

面试中遇到了一个问题请大神指点一下

wangxiaolei 回复了问题 3 人关注 2 个回复 2532 次浏览 2016-03-16 18:06 来自相关话题

面试问题求解

fish 回复了问题 2 人关注 6 个回复 2599 次浏览 2016-03-10 15:54 来自相关话题

数据分析面试题(2)

fish 回复了问题 2 人关注 1 个回复 4637 次浏览 2016-02-19 18:43 来自相关话题

数据分析面试题

fish 回复了问题 3 人关注 1 个回复 4941 次浏览 2016-02-19 11:36 来自相关话题

大学生去阿里巴巴总部参观应该关注哪些问题?各位上班人士,多多建议!非常感谢!

colincheng 回复了问题 4 人关注 3 个回复 4460 次浏览 2015-12-24 13:22 来自相关话题

我在面试机器学习、大数据岗位时遇到的各种问题

木舟 发表了文章 3 个评论 3465 次浏览 2015-09-10 16:43 来自相关话题

  自己的专业方向是机器学习、数据挖掘,就业意向是互联网行业与本专业相关的工作岗位。各个企业对这类岗位的命名可能有所不同,比如数据挖掘/自然语言处理/机器学习算法工程师,或简称算法工程师,还有的称为搜索/推荐算法工程师,甚至有的并入后台工程师的范畴 ...查看全部
 
自己的专业方向是机器学习、数据挖掘,就业意向是互联网行业与本专业相关的工作岗位。各个企业对这类岗位的命名可能有所不同,比如数据挖掘/自然语言处理/机器学习算法工程师,或简称算法工程师,还有的称为搜索/推荐算法工程师,甚至有的并入后台工程师的范畴,视岗位具体要求而定。
 
机器学习、大数据相关岗位的职责
自己参与面试的提供算法岗位的公司有 BAT、小米、360、飞维美地、宜信、猿题库 等,根据业务的不同,岗位职责大概分为:
平台搭建类
数据计算平台搭建,基础算法实现,当然,要求支持大样本量、高维度数据,所以可能还需要底层开发、并行计算、分布式计算等方面的知识;
 
算法研究类
  • 文本挖掘,如领域知识图谱构建、垃圾短信过滤等;
  • 推荐,广告推荐、APP 推荐、题目推荐、新闻推荐等;
  • 排序,搜索结果排序、广告排序等;
  • 广告投放效果分析;
  • 互联网信用评价;
  • 图像识别、理解。
 数据挖掘类
  • 商业智能,如统计报表;
  • 用户体验分析,预测流失用户。
以上是根据本人求职季有限的接触所做的总结。有的应用方向比较成熟,业界有足够的技术积累,比如搜索、推荐,也有的方向还有很多开放性问题等待探索,比如互联网金融、互联网教育。在面试的过程中,一方面要尽力向企业展现自己的能力,另一方面也是在增进对行业发展现状与未来趋势的理解,特别是可以从一些刚起步的企业和团队那里,了解到一些有价值的一手问题。以下首先介绍面试中遇到的一些真实问题,然后谈一谈答题和面试准备上的建议。 面试问题
  • 你在研究/项目/实习经历中主要用过哪些机器学习/数据挖掘的算法?
  • 你熟悉的机器学习/数据挖掘算法主要有哪些?
  • 你用过哪些机器学习/数据挖掘工具或框架?
  • 基础知识
  • 无监督和有监督算法的区别?
  • SVM 的推导,特性?多分类怎么处理?
  • LR 的推导,特性?
  • 决策树的特性?
  • SVM、LR、决策树的对比?
  • GBDT 和 决策森林 的区别?
  • 如何判断函数凸或非凸?
  • 解释对偶的概念。
  • 如何进行特征选择?
  • 为什么会产生过拟合,有哪些方法可以预防或克服过拟合?
  • 介绍卷积神经网络,和 DBN 有什么区别?
  • 采用 EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?
  • 用 EM 算法推导解释 Kmeans。
  • 用过哪些聚类算法,解释密度聚类算法。
  • 聚类算法中的距离度量有哪些?
  • 如何进行实体识别?
  • 解释贝叶斯公式和朴素贝叶斯分类。
  • 写一个 Hadoop 版本的 wordcount。
……开放问题
  • 给你公司内部群组的聊天记录,怎样区分出主管和员工?
  • 如何评估网站内容的真实性(针对代刷、作弊类)?
  • 深度学习在推荐系统上可能有怎样的发挥?
  • 路段平均车速反映了路况,在道路上布控采集车辆速度,如何对路况做出合理估计?采集数据中的异常值如何处理?
  • 如何根据语料计算两个词词义的相似度?
  • 在百度贴吧里发布 APP 广告,问推荐策略?
  • 如何判断自己实现的 LR、Kmeans 算法是否正确?
  • 100亿数字,怎么统计前100大的?
 答题思路用过什么算法?
  • 最好是在项目/实习的大数据场景里用过,比如推荐里用过 CF、LR,分类里用过 SVM、GBDT;
  • 一般用法是什么,是不是自己实现的,有什么比较知名的实现,使用过程中踩过哪些坑;
  • 优缺点分析。
熟悉的算法有哪些?
  • 基础算法要多说,其它算法要挑熟悉程度高的说,不光列举算法,也适当说说应用场合;
  • 面试官和你的研究方向可能不匹配,不过在基础算法上你们还是有很多共同语言的,你说得太高大上可能效果并不好,一方面面试官还是要问基础的,另一方面一旦面试官突发奇想让你给他讲解高大上的内容,而你只是泛泛的了解,那就傻叉了。
用过哪些框架/算法包?
  • 主流的分布式框架如 Hadoop,Spark,Graphlab,Parameter Server 等择一或多使用了解;
  • 通用算法包,如 mahout,scikit,weka 等;
  • 专用算法包,如 opencv,theano,torch7,ICTCLAS 等。
基础知识
  • 对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;
  • 从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。
  • 产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
  • 原理推导(最大间隔,软间隔,对偶);
  • 求解方法(随机梯度下降、拟牛顿法等优化算法);
  • 优缺点,相关改进;
  • 和其他基本方法的对比;
个人感觉高频话题是 SVM、LR、决策树(决策森林)和聚类算法,要重点准备; 算法要从以下几个方面来掌握:
  • 不能停留在能看懂的程度,还要产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
  • 原理推导(最大间隔,软间隔,对偶);
  • 求解方法(随机梯度下降、拟牛顿法等优化算法);
  • 优缺点,相关改进;
  • 和其他基本方法的对比;
  • 对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;
  • 从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。
 开放问题
  • 由于问题具有综合性和开放性,所以不仅仅考察对算法的了解,还需要足够的实战经验作基础;
  • 先不要考虑完善性或可实现性,调动你的一切知识储备和经验储备去设计,有多少说多少,想到什么说什么,方案都是在你和面试官讨论的过程里逐步完善的,不过面试官有两种风格:引导你思考考虑不周之处 or 指责你没有考虑到某些情况,遇到后者的话还请注意灵活调整答题策略;
  • 和同学朋友开展讨论,可以从上一节列出的问题开始。
 准备建议
  • 基础算法复习两条线
  • 材料阅读 包括经典教材(比如 PRML,模式分类)、网上系列博客(比如 研究者July),系统梳理基础算法知识;
  • 面试反馈 面试过程中会让你发现自己的薄弱环节和知识盲区,把这些问题记录下来,在下一次面试前搞懂搞透。
  • 除算法知识,还应适当掌握一些系统架构方面的知识,可以从网上分享的阿里、京东、新浪微博等的架构介绍 PPT 入手,也可以从 Hadoop、Spark 等的设计实现切入。
  • 如果真的是以就业为导向就要在平时注意实战经验的积累,在科研项目、实习、比赛(Kaggle,Netflix,天猫大数据竞赛等)中摸清算法特性、熟悉相关工具与模块的使用。

 
总结
如今,好多机器学习、数据挖掘的知识都逐渐成为常识,要想在竞争中脱颖而出,就必须做到保持学习热情,关心热点;
深入学习,会用,也要理解;
在实战中历练总结;
积极参加学术界、业界的讲座分享,向牛人学习,与他人讨论。
 
最后,希望自己的求职季经验总结能给大家带来有益的启发。
 
来源:太极儒的博客

面试经验分享之数据结构、算法题

木舟 发表了文章 0 个评论 2331 次浏览 2015-09-10 16:24 来自相关话题

 前言 面试 IT 企业的研发岗位,数据结构和算法显然是必考的项目。俺只学过普通的数据结构课程,没读过 STL,也没有过 ACM 的训练和比赛经历,在一开始面对这样类型题目的时候,心里还是十分忐忑的。大大小小几十场 ...查看全部
 前言
面试 IT 企业的研发岗位,数据结构和算法显然是必考的项目。俺只学过普通的数据结构课程,没读过 STL,也没有过 ACM 的训练和比赛经历,在一开始面对这样类型题目的时候,心里还是十分忐忑的。大大小小几十场面试下来,自己在这方面总算有了一定的心得积累,在此抛砖引玉,以飨读者。
在正式介绍题目和准备方法之前,有两点需要说明,
  • Google 和 Facebook 这类对算法有很高要求的公司的在线测试我没有参加过(不过在牛人内推帮助下有过面试体验……),这超出了我目前的编码能力范围,网上有不少拿到 Google、Facebook offer 的经验总结文章,可以移步观赏;
  • 前段时间在微博上又看到有人说自己把 leetcode 刷了好几遍,不过一些转发评论者觉得, IT 公司面试中的算法考察没有价值,一来工作里用不太上,二来把程序员素质考察搞成了应试教育,他们认为更重要的是应聘者的工程能力。遇到这样的讨论,我一般喜欢和一把稀泥。若干年前, Google、微软的面试题让大家眼前一亮,觉得能选拔出个性十足的聪明人来,不过随着大家对这类题目的适应,可能选拔出来的人也在趋同,至少很多人都会在面试前用心准备。没有什么一劳永逸、一成不变的考查方式,毕竟面试是人和人之间的动态“较量”。不要贪恋算法的奇技淫巧,也不要因为题目筛选力度的衰减而否定考察初衷。面试不仅是考验求职者,也同样在考验面试官,如果问的都是老题儿,那本山大叔肯定都会抢答了
言归正传,以下分数据结构题目、算法题目、开放题目三部分来介绍我在面试中碰到的问题。数据结构题目概述虽然课本由简到繁、由难到易地介绍了诸多数据结构,我在面试中被问到的却还都是基本类型,比如堆栈、队列、链表、二叉树。题目主要有两类,数据结构实现和具体情境下数据结构的应用。 分类讨论:类型一:数据结构实现[list=1]
  • 实现 java.util.List 中的基础功能;
  • 实现栈,使得 添加、删除、max 操作的复杂度为 O(1)(我脚着好像是不可实现的,想到最好的是添加、删除 O(log), max 是 O(1));
  • 选取任意数据结构实现添加、删除、随机返回三个功能,分析复杂度;
  • 用数组实现队列,各操作的复杂度分析。
  • 类型二:数据结构应用[list=1]
  • 两棵树相加——对应位置两棵树都有值则相加,对应位置只有一棵树有值则取该值;
  • 用速度不同的指针可以判断链表中是否有环,问两速度满足怎样的关系可以保证发现环;
  • 如何在语料中寻找频繁出现的字串,分析复杂度(tire树);
  • 中缀表达式转逆波兰表达式,逆波兰表达式求值;
  • 数据解压缩,3(a4(ab)) -> aababababaababababaabababab;
  • 二叉树的文件存储
  • 准备建议上上之选当然是看《算法导论》,书和公开课都算。注意熟记不同数据结构的不同操作的不同实现方式(比如哈希表的插入删除查找)的复杂度分析,不管面试官给你出的题目是难是易,妥妥儿的会问复杂度。 算法题目概述有过面试经历的企业(BAT、小米、宜信、猿题库、FreeWheel等)当中,还没有谁问过我需要复杂算法才能解决的问题。我遇到的算法题目大致可以分为两类:
    • 经典算法实现题 快速排序、归并排序、堆排序、KMP算法等都是重点,重要的是代码的正确性,其次是复杂度分析,当然,人家也不都是直接问你怎么实现这个具体算法,而是包装到情境里;
    • 思维益智题 考察你分析问题的能力,大部分可以归结到二分、动态规划、递归上,重要的是思路,其次是尽量低的复杂度,再次是代码的正确性
     下面具体介绍我遇到的两种类型题目中的问题。分类讨论:类型一:经典算法实现题[list=1]
  • 实现快速排序、归并排序、堆排序,各排序算法复杂度分析;
  • 实现KMP,解释原理;
  • 迷宫的深度搜索、广度搜索;
  • 写 find 函数,在目标串中匹配模式串(要考虑中文字符的情况)。
  • 类型二:思维益智题[list=1]
  • 数列中找第 k 大的数字(与快排或堆排序有关);
  • 两个有序数组,寻找归并排序后数组的中位数/第 k 大数字(与二分有关);
  • 一维数组,swap 其中的几对数字(每个数字只属于一次 swap 操作),实现查找(与二分有关);
  • 一个有序数组,其中一个数字发生变异,但不知道变异后会不会影响整体序,如何实现查找;
  • 二维数组,每行递增,每列递增
    • 实现查找;
    • 二维数组,每行递增,每列递增,求第 k 大的数;
    • 任意交换其中的两数,发现并恢复 
  • 寻找字符串中第一个只出现一次的字符;
  • 统计数列中的逆序对(归并排序有关);
  • 最长公共子串(动态规划有关);
  • 最大子序列和,允许交换一次的最大子序列和;
  • 给定数组,寻找 next big(堆排序有关);
  • 一维有序数组,经过循环位移后,最小的数出现在数列中间
    • 如果原数组严格递增,如何找这个最小数;
    • 如果原数组严格递增或递减,如何找这个最小数;
    • 如果原数组非严格递增或递减,如何找这个最小数 
  • 数组可能是递增、递减、递减后递增、递增后递减四种情况,递增递减都是非严格的,如果有转折点,返回转折点的值,否则返回-1;
  • 单向网络,起点和终点唯一且连通,寻找那些一旦被删除将导致起点终点无法连通的点;
  • 有序数组寻找和为某数的一对数字;
  • 墙里能装多少水;
  • 打印螺旋数组;
  • 打印组合数;
  • 字符数组,统计指定区间内的回文串个数。
  • 准备建议开放题这类开放题目让你自主选择数据结构,主要是考察求职者对于数据结构的特性与使用场景的综合理解,在面对具体应用场景时能否运用已有的数据结构和算法知识提出合理的解决方案。一般来说在这类问题里哈希表的出场率会比较高……例题如下[list=1]
  • 大数据量的 url log,怎么去重且统计每个 url 的出现次数,复杂度分析;
  • 设计 cache 系统
    • 设计 cache 的接口;
    • 可以用什么数据结构实现;
    • 如何实现可伸缩的容量;
    • cache 的空间管理策略,比如 cache 哪些条目,何时清理;
    • cache 系统启动时分配多大的空间,之后按照怎样的策略增大; 
  • 设计爬虫;
  • 流媒体播放客户端从多个完全相同的发送方接收视频包,同一发送方的包会按序到达,不同发送方的包则不一定,有可能会丢包,但还是要保证播放流畅度,设计播放客户端的算法。
  • 总结
    • 数据结构和算法的基础知识还是十分重要的,大部分题目的思路来源于此;
    • 训练自己算法复杂度的分析能力,有的时候对复杂度的分析会反过来会帮助你找到更好的算法
    • 一定量的题目积累很重要,就好像准备高考数学压轴题一样,见识的越多,思路来得越快,当然,前提是你能够不断总结反思

      来源:太极儒的博客

    Google面试题求解:平面上N个点,求一条直线,穿过的点数最多。

    木舟 回复了问题 2 人关注 1 个回复 6172 次浏览 2015-09-09 16:56 来自相关话题

    大数据面试题求解:将多个集合合并成没有交集的集合:给定一个字符串的集合,格式如: 。

    木舟 回复了问题 1 人关注 1 个回复 6980 次浏览 2015-09-09 14:16 来自相关话题

    条新动态, 点击查看
    面试过程中,问的比较多的主要是以下几个问题: 1.java 多线程:主要有线程池,同步实现的几种方式。 2.Java IO种类,比如AIO,BIO和NIO。 3.几种线程安全的map区别,比如hashtable和ConcurrentHashMap的区别等。 J... 显示全部 »
    面试过程中,问的比较多的主要是以下几个问题: 1.java 多线程:主要有线程池,同步实现的几种方式。 2.Java IO种类,比如AIO,BIO和NIO。 3.几种线程安全的map区别,比如hashtable和ConcurrentHashMap的区别等。 JVM部分主要问了: 1.JVM组成部分,当时忘记说了一个部分是直接内存区(heap外的内存,用于NIO的直接映射IO) 2.JVM在什么时候会发生OOM? 3.JVM各个区域使用的内存回收算法,在使用过程中怎么优化? 4.常用的JVM工具怎么排查OOM,这个老师视频说的比较详细 5.JVM悲观策略? 算法部分: 主要是排序和查找算法 大数据框架部分: 1.mapreduce的shuffle流程和如何优化shuffle? 2.mapreduce的几种压缩方式和可分割压缩 3.zk主要作用,编写zk的时候使用了哪个interface,这个当时确实忘记了 4.hive怎么解决数据倾斜的? 5.二次排序原理 6.java如何序列化,transient作用?volatile?   项目: 。。。。这部分二面的时候问的比较多,大家把老师讲的项目做好,架构理解

    腾讯面试题

    回复

    苗雨佳 发起了问题 1 人关注 0 个回复 1813 次浏览 2018-02-08 09:59 来自相关话题

    如果把面试算法的视频搞懂,能不能不用再耗费大量时间刷LeetCode题目?

    回复

    邹博 回复了问题 2 人关注 1 个回复 3573 次浏览 2017-05-28 13:29 来自相关话题

    2016年Web前端面试题目汇总

    回复

    傲风寒 发起了问题 1 人关注 0 个回复 1946 次浏览 2016-03-23 16:00 来自相关话题

    面试中遇到了一个问题请大神指点一下

    回复

    wangxiaolei 回复了问题 3 人关注 2 个回复 2532 次浏览 2016-03-16 18:06 来自相关话题

    面试问题求解

    回复

    fish 回复了问题 2 人关注 6 个回复 2599 次浏览 2016-03-10 15:54 来自相关话题

    数据分析面试题(2)

    回复

    fish 回复了问题 2 人关注 1 个回复 4637 次浏览 2016-02-19 18:43 来自相关话题

    数据分析面试题

    回复

    fish 回复了问题 3 人关注 1 个回复 4941 次浏览 2016-02-19 11:36 来自相关话题

    大学生去阿里巴巴总部参观应该关注哪些问题?各位上班人士,多多建议!非常感谢!

    回复

    colincheng 回复了问题 4 人关注 3 个回复 4460 次浏览 2015-12-24 13:22 来自相关话题

    Google面试题求解:平面上N个点,求一条直线,穿过的点数最多。

    回复

    木舟 回复了问题 2 人关注 1 个回复 6172 次浏览 2015-09-09 16:56 来自相关话题

    大数据面试题求解:将多个集合合并成没有交集的集合:给定一个字符串的集合,格式如: 。

    回复

    木舟 回复了问题 1 人关注 1 个回复 6980 次浏览 2015-09-09 14:16 来自相关话题

    我在面试机器学习、大数据岗位时遇到的各种问题

    木舟 发表了文章 3 个评论 3465 次浏览 2015-09-10 16:43 来自相关话题

      自己的专业方向是机器学习、数据挖掘,就业意向是互联网行业与本专业相关的工作岗位。各个企业对这类岗位的命名可能有所不同,比如数据挖掘/自然语言处理/机器学习算法工程师,或简称算法工程师,还有的称为搜索/推荐算法工程师,甚至有的并入后台工程师的范畴 ...查看全部
     
    自己的专业方向是机器学习、数据挖掘,就业意向是互联网行业与本专业相关的工作岗位。各个企业对这类岗位的命名可能有所不同,比如数据挖掘/自然语言处理/机器学习算法工程师,或简称算法工程师,还有的称为搜索/推荐算法工程师,甚至有的并入后台工程师的范畴,视岗位具体要求而定。
     
    机器学习、大数据相关岗位的职责
    自己参与面试的提供算法岗位的公司有 BAT、小米、360、飞维美地、宜信、猿题库 等,根据业务的不同,岗位职责大概分为:
    平台搭建类
    数据计算平台搭建,基础算法实现,当然,要求支持大样本量、高维度数据,所以可能还需要底层开发、并行计算、分布式计算等方面的知识;
     
    算法研究类
    • 文本挖掘,如领域知识图谱构建、垃圾短信过滤等;
    • 推荐,广告推荐、APP 推荐、题目推荐、新闻推荐等;
    • 排序,搜索结果排序、广告排序等;
    • 广告投放效果分析;
    • 互联网信用评价;
    • 图像识别、理解。
     数据挖掘类
    • 商业智能,如统计报表;
    • 用户体验分析,预测流失用户。
    以上是根据本人求职季有限的接触所做的总结。有的应用方向比较成熟,业界有足够的技术积累,比如搜索、推荐,也有的方向还有很多开放性问题等待探索,比如互联网金融、互联网教育。在面试的过程中,一方面要尽力向企业展现自己的能力,另一方面也是在增进对行业发展现状与未来趋势的理解,特别是可以从一些刚起步的企业和团队那里,了解到一些有价值的一手问题。以下首先介绍面试中遇到的一些真实问题,然后谈一谈答题和面试准备上的建议。 面试问题
    • 你在研究/项目/实习经历中主要用过哪些机器学习/数据挖掘的算法?
    • 你熟悉的机器学习/数据挖掘算法主要有哪些?
    • 你用过哪些机器学习/数据挖掘工具或框架?
    • 基础知识
    • 无监督和有监督算法的区别?
    • SVM 的推导,特性?多分类怎么处理?
    • LR 的推导,特性?
    • 决策树的特性?
    • SVM、LR、决策树的对比?
    • GBDT 和 决策森林 的区别?
    • 如何判断函数凸或非凸?
    • 解释对偶的概念。
    • 如何进行特征选择?
    • 为什么会产生过拟合,有哪些方法可以预防或克服过拟合?
    • 介绍卷积神经网络,和 DBN 有什么区别?
    • 采用 EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?
    • 用 EM 算法推导解释 Kmeans。
    • 用过哪些聚类算法,解释密度聚类算法。
    • 聚类算法中的距离度量有哪些?
    • 如何进行实体识别?
    • 解释贝叶斯公式和朴素贝叶斯分类。
    • 写一个 Hadoop 版本的 wordcount。
    ……开放问题
    • 给你公司内部群组的聊天记录,怎样区分出主管和员工?
    • 如何评估网站内容的真实性(针对代刷、作弊类)?
    • 深度学习在推荐系统上可能有怎样的发挥?
    • 路段平均车速反映了路况,在道路上布控采集车辆速度,如何对路况做出合理估计?采集数据中的异常值如何处理?
    • 如何根据语料计算两个词词义的相似度?
    • 在百度贴吧里发布 APP 广告,问推荐策略?
    • 如何判断自己实现的 LR、Kmeans 算法是否正确?
    • 100亿数字,怎么统计前100大的?
     答题思路用过什么算法?
    • 最好是在项目/实习的大数据场景里用过,比如推荐里用过 CF、LR,分类里用过 SVM、GBDT;
    • 一般用法是什么,是不是自己实现的,有什么比较知名的实现,使用过程中踩过哪些坑;
    • 优缺点分析。
    熟悉的算法有哪些?
    • 基础算法要多说,其它算法要挑熟悉程度高的说,不光列举算法,也适当说说应用场合;
    • 面试官和你的研究方向可能不匹配,不过在基础算法上你们还是有很多共同语言的,你说得太高大上可能效果并不好,一方面面试官还是要问基础的,另一方面一旦面试官突发奇想让你给他讲解高大上的内容,而你只是泛泛的了解,那就傻叉了。
    用过哪些框架/算法包?
    • 主流的分布式框架如 Hadoop,Spark,Graphlab,Parameter Server 等择一或多使用了解;
    • 通用算法包,如 mahout,scikit,weka 等;
    • 专用算法包,如 opencv,theano,torch7,ICTCLAS 等。
    基础知识
    • 对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;
    • 从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。
    • 产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
    • 原理推导(最大间隔,软间隔,对偶);
    • 求解方法(随机梯度下降、拟牛顿法等优化算法);
    • 优缺点,相关改进;
    • 和其他基本方法的对比;
    个人感觉高频话题是 SVM、LR、决策树(决策森林)和聚类算法,要重点准备; 算法要从以下几个方面来掌握:
    • 不能停留在能看懂的程度,还要产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
    • 原理推导(最大间隔,软间隔,对偶);
    • 求解方法(随机梯度下降、拟牛顿法等优化算法);
    • 优缺点,相关改进;
    • 和其他基本方法的对比;
    • 对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;
    • 从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。
     开放问题
    • 由于问题具有综合性和开放性,所以不仅仅考察对算法的了解,还需要足够的实战经验作基础;
    • 先不要考虑完善性或可实现性,调动你的一切知识储备和经验储备去设计,有多少说多少,想到什么说什么,方案都是在你和面试官讨论的过程里逐步完善的,不过面试官有两种风格:引导你思考考虑不周之处 or 指责你没有考虑到某些情况,遇到后者的话还请注意灵活调整答题策略;
    • 和同学朋友开展讨论,可以从上一节列出的问题开始。
     准备建议
    • 基础算法复习两条线
    • 材料阅读 包括经典教材(比如 PRML,模式分类)、网上系列博客(比如 研究者July),系统梳理基础算法知识;
    • 面试反馈 面试过程中会让你发现自己的薄弱环节和知识盲区,把这些问题记录下来,在下一次面试前搞懂搞透。
    • 除算法知识,还应适当掌握一些系统架构方面的知识,可以从网上分享的阿里、京东、新浪微博等的架构介绍 PPT 入手,也可以从 Hadoop、Spark 等的设计实现切入。
    • 如果真的是以就业为导向就要在平时注意实战经验的积累,在科研项目、实习、比赛(Kaggle,Netflix,天猫大数据竞赛等)中摸清算法特性、熟悉相关工具与模块的使用。

     
    总结
    如今,好多机器学习、数据挖掘的知识都逐渐成为常识,要想在竞争中脱颖而出,就必须做到保持学习热情,关心热点;
    深入学习,会用,也要理解;
    在实战中历练总结;
    积极参加学术界、业界的讲座分享,向牛人学习,与他人讨论。
     
    最后,希望自己的求职季经验总结能给大家带来有益的启发。
     
    来源:太极儒的博客

    面试经验分享之数据结构、算法题

    木舟 发表了文章 0 个评论 2331 次浏览 2015-09-10 16:24 来自相关话题

     前言 面试 IT 企业的研发岗位,数据结构和算法显然是必考的项目。俺只学过普通的数据结构课程,没读过 STL,也没有过 ACM 的训练和比赛经历,在一开始面对这样类型题目的时候,心里还是十分忐忑的。大大小小几十场 ...查看全部
     前言
    面试 IT 企业的研发岗位,数据结构和算法显然是必考的项目。俺只学过普通的数据结构课程,没读过 STL,也没有过 ACM 的训练和比赛经历,在一开始面对这样类型题目的时候,心里还是十分忐忑的。大大小小几十场面试下来,自己在这方面总算有了一定的心得积累,在此抛砖引玉,以飨读者。
    在正式介绍题目和准备方法之前,有两点需要说明,
    • Google 和 Facebook 这类对算法有很高要求的公司的在线测试我没有参加过(不过在牛人内推帮助下有过面试体验……),这超出了我目前的编码能力范围,网上有不少拿到 Google、Facebook offer 的经验总结文章,可以移步观赏;
    • 前段时间在微博上又看到有人说自己把 leetcode 刷了好几遍,不过一些转发评论者觉得, IT 公司面试中的算法考察没有价值,一来工作里用不太上,二来把程序员素质考察搞成了应试教育,他们认为更重要的是应聘者的工程能力。遇到这样的讨论,我一般喜欢和一把稀泥。若干年前, Google、微软的面试题让大家眼前一亮,觉得能选拔出个性十足的聪明人来,不过随着大家对这类题目的适应,可能选拔出来的人也在趋同,至少很多人都会在面试前用心准备。没有什么一劳永逸、一成不变的考查方式,毕竟面试是人和人之间的动态“较量”。不要贪恋算法的奇技淫巧,也不要因为题目筛选力度的衰减而否定考察初衷。面试不仅是考验求职者,也同样在考验面试官,如果问的都是老题儿,那本山大叔肯定都会抢答了
    言归正传,以下分数据结构题目、算法题目、开放题目三部分来介绍我在面试中碰到的问题。数据结构题目概述虽然课本由简到繁、由难到易地介绍了诸多数据结构,我在面试中被问到的却还都是基本类型,比如堆栈、队列、链表、二叉树。题目主要有两类,数据结构实现和具体情境下数据结构的应用。 分类讨论:类型一:数据结构实现[list=1]
  • 实现 java.util.List 中的基础功能;
  • 实现栈,使得 添加、删除、max 操作的复杂度为 O(1)(我脚着好像是不可实现的,想到最好的是添加、删除 O(log), max 是 O(1));
  • 选取任意数据结构实现添加、删除、随机返回三个功能,分析复杂度;
  • 用数组实现队列,各操作的复杂度分析。
  • 类型二:数据结构应用[list=1]
  • 两棵树相加——对应位置两棵树都有值则相加,对应位置只有一棵树有值则取该值;
  • 用速度不同的指针可以判断链表中是否有环,问两速度满足怎样的关系可以保证发现环;
  • 如何在语料中寻找频繁出现的字串,分析复杂度(tire树);
  • 中缀表达式转逆波兰表达式,逆波兰表达式求值;
  • 数据解压缩,3(a4(ab)) -> aababababaababababaabababab;
  • 二叉树的文件存储
  • 准备建议上上之选当然是看《算法导论》,书和公开课都算。注意熟记不同数据结构的不同操作的不同实现方式(比如哈希表的插入删除查找)的复杂度分析,不管面试官给你出的题目是难是易,妥妥儿的会问复杂度。 算法题目概述有过面试经历的企业(BAT、小米、宜信、猿题库、FreeWheel等)当中,还没有谁问过我需要复杂算法才能解决的问题。我遇到的算法题目大致可以分为两类:
    • 经典算法实现题 快速排序、归并排序、堆排序、KMP算法等都是重点,重要的是代码的正确性,其次是复杂度分析,当然,人家也不都是直接问你怎么实现这个具体算法,而是包装到情境里;
    • 思维益智题 考察你分析问题的能力,大部分可以归结到二分、动态规划、递归上,重要的是思路,其次是尽量低的复杂度,再次是代码的正确性
     下面具体介绍我遇到的两种类型题目中的问题。分类讨论:类型一:经典算法实现题[list=1]
  • 实现快速排序、归并排序、堆排序,各排序算法复杂度分析;
  • 实现KMP,解释原理;
  • 迷宫的深度搜索、广度搜索;
  • 写 find 函数,在目标串中匹配模式串(要考虑中文字符的情况)。
  • 类型二:思维益智题[list=1]
  • 数列中找第 k 大的数字(与快排或堆排序有关);
  • 两个有序数组,寻找归并排序后数组的中位数/第 k 大数字(与二分有关);
  • 一维数组,swap 其中的几对数字(每个数字只属于一次 swap 操作),实现查找(与二分有关);
  • 一个有序数组,其中一个数字发生变异,但不知道变异后会不会影响整体序,如何实现查找;
  • 二维数组,每行递增,每列递增
    • 实现查找;
    • 二维数组,每行递增,每列递增,求第 k 大的数;
    • 任意交换其中的两数,发现并恢复 
  • 寻找字符串中第一个只出现一次的字符;
  • 统计数列中的逆序对(归并排序有关);
  • 最长公共子串(动态规划有关);
  • 最大子序列和,允许交换一次的最大子序列和;
  • 给定数组,寻找 next big(堆排序有关);
  • 一维有序数组,经过循环位移后,最小的数出现在数列中间
    • 如果原数组严格递增,如何找这个最小数;
    • 如果原数组严格递增或递减,如何找这个最小数;
    • 如果原数组非严格递增或递减,如何找这个最小数 
  • 数组可能是递增、递减、递减后递增、递增后递减四种情况,递增递减都是非严格的,如果有转折点,返回转折点的值,否则返回-1;
  • 单向网络,起点和终点唯一且连通,寻找那些一旦被删除将导致起点终点无法连通的点;
  • 有序数组寻找和为某数的一对数字;
  • 墙里能装多少水;
  • 打印螺旋数组;
  • 打印组合数;
  • 字符数组,统计指定区间内的回文串个数。
  • 准备建议开放题这类开放题目让你自主选择数据结构,主要是考察求职者对于数据结构的特性与使用场景的综合理解,在面对具体应用场景时能否运用已有的数据结构和算法知识提出合理的解决方案。一般来说在这类问题里哈希表的出场率会比较高……例题如下[list=1]
  • 大数据量的 url log,怎么去重且统计每个 url 的出现次数,复杂度分析;
  • 设计 cache 系统
    • 设计 cache 的接口;
    • 可以用什么数据结构实现;
    • 如何实现可伸缩的容量;
    • cache 的空间管理策略,比如 cache 哪些条目,何时清理;
    • cache 系统启动时分配多大的空间,之后按照怎样的策略增大; 
  • 设计爬虫;
  • 流媒体播放客户端从多个完全相同的发送方接收视频包,同一发送方的包会按序到达,不同发送方的包则不一定,有可能会丢包,但还是要保证播放流畅度,设计播放客户端的算法。
  • 总结
    • 数据结构和算法的基础知识还是十分重要的,大部分题目的思路来源于此;
    • 训练自己算法复杂度的分析能力,有的时候对复杂度的分析会反过来会帮助你找到更好的算法
    • 一定量的题目积累很重要,就好像准备高考数学压轴题一样,见识的越多,思路来得越快,当然,前提是你能够不断总结反思

      来源:太极儒的博客

    Hadoop工程师面试题解析

    木舟 发表了文章 0 个评论 2575 次浏览 2015-08-26 21:54 来自相关话题

    1. 下面哪个程序负责 HDFS 数据存储。答案C datanode a)NameNode b)Jobtracker c)Datanode  d)secondaryNameNode e) ...查看全部

    1. 下面哪个程序负责 HDFS 数据存储。答案C datanode

    a)NameNode
    b)Jobtracker
    c)Datanode 
    d)secondaryNameNode
    e)tasktracker

    2. HDfS 中的 block 默认保存几份? 答案A默认3分

    a)3 份
    b)2 份
    c)1 份
    d)不确定

    3. 下列哪个程序通常与 NameNode 在一个节点启动?答案D

    a)SecondaryNameNode
    b)DataNode
    c)TaskTracker
    d)Jobtracker

    此题分析:

    hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。

    JobTracker和TaskTracker

    JobTracker 对应于 NameNode

    TaskTracker 对应于 DataNode

    DataNode 和NameNode 是针对数据存放来而言的

    JobTracker和TaskTracker是对于MapReduce执行而言的

    mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:obclient,JobTracker与TaskTracker。

    1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

    2、JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。

    3、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上。

    4. Hadoop 作者 答案C Doug cutting

    a)Martin Fowler
    b)Kent Beck
    c)Doug cutting

    5. HDFS 默认 Block Size 答案:B

    a)32MB
    b)64MB 
    c)128MB

    (因为版本更换较快,这里答案只供参考)

    6. 下列哪项通常是集群的最主要瓶颈:答案:C磁盘

    a)CPU
    b)网络
    c)磁盘IO 
    d)内存

    该题解析:

    首先集群的目的是为了节省成本,用廉价的pc机,取代小型机及大型机。小型机和大型机有什么特点?

    1.cpu处理能力强

    2.内存够大

    所以集群的瓶颈不可能是a和d

    3.网络是一种稀缺资源,但是并不是瓶颈。

    4.由于大数据面临海量数据,读写数据都需要io,然后还要冗余数据,hadoop一般备3份数据,所以IO就会打折扣。

    7. 关于 SecondaryNameNode 哪项是正确的?答案C

    a)它是 NameNode 的热备
    b)它对内存没有要求
    c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
    d)SecondaryNameNode 应与 NameNode 部署到一个节点。

    多选题:

    8. 下列哪项可以作为集群的管理?答案:ABD

    a)Puppet 
    b)Pdsh 
    c)Cloudera Manager
    d)Zookeeper

    9. 配置机架感知的下面哪项正确:答案ABC

    a)如果一个机架出问题,不会影响数据读写
    b)写入数据的时候会写到不同机架的 DataNode 中
    c)MapReduce 会根据机架获取离自己比较近的网络数据
    10. Client 端上传文件的时候下列哪项正确?答案B

    a)数据经过 NameNode 传递给 DataNode

    b)Client 端将文件切分为 Block,依次上传

    c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作

    该题分析:
    Client向NameNode发起文件写入的请求。

    NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。

    Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

    11. 下列哪个是 Hadoop 运行的模式:答案ABC

    a)单机版 
    b)伪分布式 
    c)分布式

    12. Cloudera 提供哪几种安装 CDH 的方法?答案:ABCD

    a)Cloudera manager 
    b)Tarball 
    c)Yum 
    d)Rpm

    判断题:

    13. Ganglia 不仅可以进行监控,也可以进行告警。( 正确)

    分析:此题的目的是考Ganglia的了解。严格意义上来讲是正确。ganglia作为一款最常用的Linux环境中的监控软件,它擅长的的是从节点中按照用户的需求以较低的代价采集数据。但是ganglia在预警以及发生事件后通知用户上并不擅长。最新的ganglia已经有了部分这方面的功能。但是更擅长做警告的还有Nagios。Nagios,就是一款精于预警、通知的软件。通过将Ganglia和Nagios组合起来,把Ganglia采集的数据作为Nagios的数据源,然后利用Nagios来发送预警通知,可以完美的实现一整套监控管理的系统。

    14. Block Size 是不可以修改的。(错误 )

    分析:它是可以被修改的Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。

    15. Nagios 不可以监控 Hadoop 集群,因为它不提供 Hadoop 支持。(错误 )

    分析:Nagios是集群监控工具,而且是云计算三大利器之一

    16. 如果 NameNode 意外终止,SecondaryNameNode 会接替它使集群继续工作。(错误 )

    分析:SecondaryNameNode是帮助恢复,而不是替代,如何恢复,可以查看

    17. Cloudera CDH 是需要付费使用的。(错误 )

    分析:第一套付费产品是Cloudera Enterpris,Cloudera Enterprise在美国加州举行的 Hadoop 大会 (Hadoop Summit) 上公开,以若干私有管理、监控、运作工具加强 Hadoop 的功能。收费采取合约订购方式,价格随用的 Hadoop 叢集大小变动。

    18. Hadoop 是 Java 开发的,所以 MapReduce 只支持 Java 语言编写。(错误 )

    分析:rhadoop是用R语言开发的,MapReduce是一个框架,可以理解是一种思想,可以使用其他语言开发。

    19. Hadoop 支持数据的随机读写。(错 )

    分析:lucene是支持随机读写的,而hdfs只支持随机读。但是HBase可以来补救。HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。

    20. NameNode 负责管理 metadata,client 端每次读写请求,它都会从磁盘中读取或则会写入 metadata 信息并反馈 client 端。(错误)

    此题分析:

    NameNode 不需要从磁盘读取 metadata,所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。
    1)文件写入
    Client向NameNode发起文件写入的请求。
    NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
    Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

    2)文件读取
    Client向NameNode发起文件读取的请求。

    21. NameNode 本地磁盘保存了 Block 的位置信息。( 个人认为正确,欢迎提出其它意见)

    分析:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。NameNode返回文件存储的DataNode的信息。
    Client读取文件信息。

    22. DataNode 通过长连接与 NameNode 保持通信。( )

    这个有分歧:具体正在找这方面的有利资料。下面提供资料可参考。

    首先明确一下概念:

    (1).长连接
    Client方与Server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,此种方式常用于点对点通讯。

    (2).短连接
    Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server.

    23. Hadoop 自身具有严格的权限管理和安全措施保障集群正常运行。(错误 )

    hadoop只能阻止好人犯错,但是不能阻止坏人干坏事

    24. Slave 节点要存储数据,所以它的磁盘越大越好。( 错误)

    分析:一旦Slave节点宕机,数据恢复是一个难题

    25. hadoop dfsadmin –report 命令用于检测 HDFS 损坏块。(错误 )

    26. Hadoop 默认调度器策略为 FIFO(正确 )

    27. 集群内每个节点都应该配 RAID,这样避免单磁盘损坏,影响整个节点运行。(错误 )

    分析:首先明白什么是RAID,可以参考百科磁盘阵列。这句话错误的地方在于太绝对,具体情况具体分析。题目不是重点,知识才是最重要的。因为hadoop本身就具有冗余能力,所以如果不是很严格不需要都配备RAID。具体参考第二题。

    28. 因为 HDFS 有多个副本,所以 NameNode 是不存在单点问题的。(错误 )

    29. 每个 map 槽就是一个线程。(错误 )

    分析:首先我们知道什么是map 槽,map 槽->map slotmap slot 只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程

    30. Mapreduce 的 input split 就是一个 block。(错误 )

    31. NameNode 的 Web UI 端口是 50030,它通过 jetty 启动的 Web 服务。(错误 )

    32. Hadoop 环境变量中的 HADOOP_HEAPSIZE 用于设置所有 Hadoop 守护线程的内存。它默认是 200 GB。( 错误)

    hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。

    33、33. DataNode 首次加入 cluster 的时候,如果 log 中报告不兼容文件版本,那需要 NameNode执行“Hadoop namenode -format”操作格式化磁盘。(错误 )

    分析:

    首先明白介绍,什么ClusterID

    ClusterID

    添加了一个新的标识符ClusterID用于标识集群中所有的节点。当格式化一个Namenode,需要提供这个标识符或者自动生成。这个ID可以被用来格式化加入集群的其他Namenode。

    二次整理

    有的同学问题的重点不是上面分析内容:内容如下:

    这个报错是说明 DataNode 所装的Hadoop版本和其它节点不一致,应该检查DataNode的Hadoop版本