某公司人工智能面试总结

某公司人工智能面试总结

2018年09月01日 20:31:11 zhoujl48 阅读数:1821

本文用于记录这几天面试下来的一些流程和心得体会,重点记录XXXX部门的三场面试,了解自己的优势,更重要的是发现自己的不足,以便在日后针对性的加强学习和进步!


1 面试流程

  • 面试流程
轮数 面试类型 面试方式 面试时长(min)
1 技术面 视频 30
2 技术面 视频 60 - 70
3 HR面 电话 20 - 30

1.1 技术面(14:00 – 14:30, 15:30 – 16:40, 30/Aug.)

1.1.1 自我介绍

首先是一段自我介绍,自我介绍内容可以尽量简洁,只涵盖和自己及岗位相关的框架,便于面试官在我们陈述过程中抓取感兴趣的内容,拓展开来提问;这个时候不需要慌张,可以随时终止自我介绍,针对面试官的提问,详细展开,分点描述。如果一开始就事无巨细的把自己的各类爱好特长科研经历的细节一一陈述,不仅浪费时间,更会丧失重点,更重要的是,会给面试官留下主次不分,没有条理的坏印象。

1.1.2 话题来源

从几次的技术面试经历来看,除了面试官准备好一定要问的问题之外,问题来源一般有三:

  • 自我介绍
  • 个人简历,重要性依次为:项目经历 > 专业技能 > 专业课程
  • 在详述某个内容或项目时,提及的面试官兴趣的某个项目或技能

从某种意义上来说,准备好自我介绍认真雕琢简历(在此特别感谢一位学长给我简历上的指导!),以及对项目的了如指掌,就已经主导了这一场面试的大部分讨论话题!

1.1.3 互动方式

两次技术面试除了在时长上面有所差异,面试内容问题差异不大,但是根据技术面试官个人的喜好和性格,呈现出两种不同的面试风格。其中:

  • 一面倾向于面试官提问 -- 我来回答的模式,面试官本人不会对我的回答进行详细的评价,而是立即进行下一个问题的讨论;
  • 二面倾向于面试官提问 -- 我来回答 -- 双方讨论的模式,虽然面试官在我回答之后同样不会给出正确答案,但是会针对我的回答进行一定程度上的互动,例如:
    • 阐述该问题在专业领域的重要性
    • 解释该问题涉及的相关技能
    • 对问题进行略微的改动,观察我的迁移学习和反应能力

1.1.4 面试问题

由于当时没有特意记录,这里全凭记忆整理一些印象深刻的问题。

a. 基础部分

  • 介绍自己平常用到的Linux命令;
  • 介绍什么是继承和多态;
  • 介绍Numpy常用操作,如何对矩阵进行转置;
  • 介绍Pandas常用操作,如何筛选数据;
  • 如何反转输出字符串;
  • 什么是列表推导式;

b. 数据部分

  • 是否对大量数据或者经典数据集进行过数据预处理(数据清洗/数据筛选等),如果有请详述操作流程(因为没有实际数据处理经验,我只介绍了当初学习过程中如何对Boston房价和Wine数据进行清洗和预处理);
  • 介绍常用的SQL语言,如何显示所有字段,如何拼接表单(由于我对数据库仅限于了解最基础的操作,因此我只回答了我所知道的最基本的几个数据库语句,对最后一个拼接表单的问题,我直接说确实不会做。在这里说一下,如果遇到自己不会的题目,是很正常的事,直截了当地说不会就行,然后最好可以说一说和它相关但是自己又相对熟悉的其他东西,面试官不会因为我们哪个知识点不熟悉不了解而全盘否定我们的——当然前提是不要问啥啥不会[笑哭]);
  • 用Scrapy框架爬过哪些网站,分别用过哪些技能,各个网站都有什么各自的特点(详细说一说各大网站的反爬虫特点,以及自己的应对方法,有做过简单项目的华也可以针对自己的项目进行述说);
  • 是否了解Python的异步和多线程,用过哪些相关的库(这里我提到了自己做过的动态代理池项目,Github / 博客笔记,详述了整个项目的框架,然后通过其中一个异步模块顺带就回答面试官的问题);
  • 用爬虫获取的数据有什么用途,是否应用于机器学习(这一题我也是如实回答,没有对爬虫获取的数据进行过实际的应用,因为当初是在学习爬虫的各种技能,关于数据应用和挖掘这一块我尚且没有进行过实战);

c. 机器学习 & 深度学习

  • 了解哪些经典机器学习方法,针对某一两个进行详述(我在实验室项目中用到过SVM,因此详细说了下SVM的原理,以及是如何调参的;二面也问到了这个问题,但是面试官又主动问了我决策树/CART/GBDT的原理和特点,但是遗憾的是我对决策树只了解最基本的决策树和剪枝等对抗过拟合的方法,CART/GBDT两个我直接说目前还没有深入了解,同时我又描述了一下我相对比较了解的随机森林,运用的Bagging和Adaboost,继而在面试官的要求下,又详细说了一下Bagging和Adaboost的原理和效果);
  • 用过Tensorflow框架搭建过哪些模型,简述模型搭建的过程和步骤(我目前也没有针对实际应用搭建过模型,就说了最经典的MNIST的全连接网络模型以及CNN模型,分别介绍了全连接和CNN模型的搭建过程)
  • 是否了解CNN和RNN,简述其特点,以及为什么要用这两种网络(我对于RNN目前还不是特别了解,因此针对CNN进行了详述,包括卷积层 / 池化层的作用和优势,stride的选取,参数数量的改变);
  • 介绍Dropout的作用和意义;
  • 什么是过拟合和欠拟合,过拟合的应对措施有哪些(应对措施我主要说了三个:增大训练数据集的规模 / 训练提前停止 / L1和L2正则化;这之后面试官又让我说一说L1和L2正则化为什么能起作用,以及他们各自的特点,我说到了网上一篇文章用二位坐标轴来解释的,面试官笑着说他也看过这篇文章,然后互相心有灵犀我也就没有继续解释下去);
  • 是否不用深度学习框架编写过网络模型(我介绍了一下当初跟着吴恩达老师的视频课程,用纯Python搭建过识别猫的图片的后向传播神经网络,并简要介绍了一下模型的架构和作用);

d. 数据结构与算法

  • 详述快速排序的原理和过程;
  • 利用快速排序找到数据中第K大的项(这题我一时半会没有回答出来,不过和面试官交流了我的思考过程,面试官也会和我进行一定的讨论,从而判断我的逻辑是否清晰);

e. 逻辑思维

  • 有一个村子里有n个人,其中一人是明星,另外(n-1)个人是普通人。其中,明星不认识除了自己之外的任何人,却被所有普通人认识;而普通人之间有可能认识或不认识。为了找出这个村子里的明星,我们可以向上帝提问:A是否认识B,上帝会给我们正确的答案——这个操作需要O(1)的时间成本。请给出耗时尽可能少的方案。
  • 上一题的变体:
    • 有两个明星,明星之间互相认识;
    • 有两个明星,明星之间互相不认识;
    • 有两个明星,其中A认识B,但B不认识A;
    • 有(n-1)个明星;
    • 。。。
  • 这道题目和它的变体很多甚至不存在正确答案,面试官需要我们一边思考一边展示我们的思考过程,也就是解决实际问题的一个思路。

1.2 HR面(16:30 – 17:00, 31/Aug.)

前两部分技术面试通过之后,剩下最后的HR面试。HR面试主要考察我们的入职意愿,时间安排,爱好性格等等软实力和第三方因素,因为个人差异肯定较大,因此在这里不做讨论~注意一点就好,就是要给HR留下几个印象:我很希望入职,我是一个阳光上进刻苦聪明的人,并且我有时间精力参加实习,并且不会突然离职。这句话当然不能够直接说出来,要在和HR的交谈中透露出来就行。

2 一些想法和日后的学习计划

有待补充。

猜你喜欢

转载自blog.csdn.net/jgw2008/article/details/84818957