首页 > 技术文章 > 小米面试题目(测试开发岗位——不是测试,是测试工具和平台的开发岗位)

sonofelice 2015-09-23 16:26 原文

目前经历了小米的三轮面试,都是技术面试。

每次的面试形式都是先进行电话沟通,问一些项目相关的东西,还有基础知识,然后再线上写代码。三面,我一共做了6道编程题。

下面统一做下整理:

一面:

(1)电话沟通:

  1.主要是围绕着简历上自己写的项目来提问。感觉小米面试官水平比较高,因为不像hujiang的java面试官一样,问一个学计算机的什么是递归。

  2.给你两张表,变换各种场景,写不同的sql。主要是考察各种关键字的使用,distinct,group,order by,offset

  3.用shell命令对一个文件进行各种处理

  4.http协议状态码的考察

  5.关于接口的并发访问,多线程等问题

(2)在线编程:

  1.写一个简单的单例模式代码

  2.接触过哪些设计模式?

  3.链表a->b->c->d 反转成a<-b<-c<-d  。反转链表,定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表定义如下:

struct ListNode
{
int             pKey;
ListNode* pNext;
};

  4.判断一个数组是否是二叉排序树的后续遍历,写一个方法,输入值为一个整数数组,输出为True 或False。(暂且假设输入的整数数组里任意两个整数都互不相同)这道题目可以用Java来写吗?有什么思路可以写一下

二面:

(1)电话沟通:

  1.依然是先聊一下简历上项目的问题;

  2.多态

  3.输入url后面发生了什么

(2)在线编程:

  1. 有这么一种链表,它的每个结点除了包含指向下一个节点的指针,还包含一个指向该链接中任意一个节点的指针。现需要实现此类链表的克隆算法。 

  请完成clone的代码实现(C++或Java或其他语言),尽量少使用辅助空间。  

C++:
struct
Node { Node* next; Node* random_node; } Node* clone(Node* head) { … }
Java:
class Node { 
    Node next; 
    Node random_node; 
}
Node clone(Node head) {
…
}

  2. 使用shell从一个日志文件中找出出现频率最高的前十个关键词以及次数。如日志文件每行为  2015-09-10 

  3.面板:

  1  2  3

  4  5  6

  7  8  9

  0  <- 

  显示屏:

    123

    一百二十三

  当面板中按顺序点击1,2,3时,显示屏对应显示两行,123和一百二十三,<-是回退键,如此时点击回退键,则显示屏显示12和十二。

  写个程序实现这个功能,面板点击可以认为是标准输入,显示屏输出可以认为是标准输出。

三面:

(1)电话沟通:

  1.觉得前面两轮面试怎么样?

  2.觉得你做得最有底气的项目是什么?介绍一下

  3.根据上面说的,面试官说了一种类似的场景,怎么进行处理

  4.给出一种检测内存泄露的方案

  5.一个搜索引擎,目前有两种搜索算法,给出一个方案,量化评估两种算法的优劣。

    1》评估标准需要自己想办法量化;

    2》怎么准备数据;

    3》具体的实施方案……

(2)在线编程:

  代码的注释有/*   */  和   //     两种,给你一段代码,把代码中的注释去掉之后,输出去掉注释后的代码

推荐阅读