标签:
目前经历了小米的三轮面试,都是技术面试。
每次的面试形式都是先进行电话沟通,问一些项目相关的东西,还有基础知识,然后再线上写代码。三面,我一共做了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)在线编程:
代码的注释有/* */ 和 // 两种,给你一段代码,把代码中的注释去掉之后,输出去掉注释后的代码
小米面试题目(测试开发岗位——不是测试,是测试工具和平台的开发岗位)
标签:
原文地址:http://www.cnblogs.com/sonofelice/p/4832657.html