小米公司面试题面试题分享.该怎么处理

小米面试题分享。该怎么处理_读书人
小米面试题分享。该怎么处理
&来源:读书人网&【读书人网():综合教育门户网站】
小米面试题分享。首先说下,所有面试题都是考官现想现问的。印象比较深刻的如下几个。难度都不是很大。1. 一个
小米面分享。首先说下,所有面都是考官现想现问的。印象比较深刻的如下几个。难度都不是很大。1.&一个二维数组&&3&&8&10&13&&&&&&&&&&&&&&&&15&17&22&25&&&&&&&&&&&&&&&&23&26&29&31&&&&&&&&&&&&&&&&27&30&33&34尽可能快的找到一个数m,比如m&=&27我的回答是根据数组特点设计查找算法,主要是减少元素的遍历。2.一个手机键盘&主要用到&1&2&3&4&5&6&7&8&9&0&*&这11个按键,要求实现输入任意数字,返回它的中文表述,*号作为退位键,比如输入134,应返回“一百三十四”,输入1500110,应返回“一百五十万零一百一十”,要求中文表述结构应尽量合理,同时动态显示变化,比如刚才的1500110,在输入*,即1500110*,应返回“十五万零十一。3.N层的台阶有两种走法,一次一步或两步,请问一共有多少中走法,递归和非递归两种方法都需要。4.找出两个单向链表的相同元素(无序)。5.现有一张很大的域名列表,可以包含几百万条记录,其中包含重复项,有以下几个问题:&a)设计结构&b)实现去重。&c)排序&d)插入某一项(可能和表中数据重复)&e)内存不够大,如何保证访问效率&f)如何设计cache的策略&g)如何处理脏数据,例如硬盘上的数据被修改,而cache中数据还是旧的,但其实他们指向同一个IP地址。剩下都是些回答过程中延伸出来的一些小问题。还有一些数据结构的问题,比如红黑树。写下来纯属分享,有兴趣的朋友看看,都不是特别难,但是也有陷阱,比如LZ就被最后一个脏数据的坑了。。。 [解决办法]引用:Quote: 引用:Quote: 引用:Quote: 引用:Quote: 引用:楼主面试的是什么职位?=&=自动化测试。。。很奇怪没怎么问测试的东西~自动化测试&&一般还是要写代码的貌似楼主这题不简单吧,第4题,怎么做呀?一个有m个元素,一个有n个元素,要求时间复杂度小于O(m*n)第四题我选择了先排序,然后遍历第五题不是,大数据处理,我的答案是先哈希,然后建链表,cache根据访问量和频率,通过规定接口确保不产生脏数据用map,域名为key,IP地址为value,根据字符串排序,然后根据第一个字母,建&树,以便快速检索。[解决办法]第5题用&B树,算法导论里有。以前看过,现在就只记得这个名字了。通信-小米2016年校园招聘面试题,笔试题,面试流程,面试经验-完结 - 乔布简历
打开微信,扫描二维码
点击微信右上角,分享到朋友圈
本帖由乔布简历-辉哥收集、整理、编辑,内容包括小米最新最全校招信息,简历、笔试/面试真题、笔经面经,欢迎大家与同学好友分享,能让更多同学得益。
小米2016最新校招信息
想进小米?简历要这么写才行!
小米历年岗位面试经验分享
小米最全笔试真题、经验、攻略
小米待遇、工作、实习经验分享汇总
最全的2016名企校招时间表
-小米2016最新校招信息-
面向人群:2016届毕业生 (-期间毕业的同学)
招聘职位:Android/iOS开发工程师、产品实习生/产品经理、米家体验伙伴、仓储专员、UX/UI设计师、产品运营专员/实习、管理培训生
流程:网申——笔试(仅软件研发类职位)——面试——offer
网申时间:7月上旬
网申地址:
在线笔试:暂无
面试预约:暂无
专场面试:暂无
(重要时间记得拍照留存哦)
-乔小堂说,投小米要这么写简历!-
-小米历年岗位面试(真题、经验、攻略)-
-小米网申、笔试(真题、经验、攻略)-
-小米待遇、工作、实习经验分享汇总-
-最全的2016名企校招时间表请猛击下方-
想知道今年小米在招哪些岗位吗?请移步校园招聘信息小组:
查看最新岗位信息。小米科技有限公司软件开发工程师工资待遇 - 真人分享工资待遇 - 职业圈
小米科技有限公司
真人分享(小米科技有限公司)
小米科技有限公司 - 软件开发工程师工资详情(北京,2013年)
此信息由圈友于2013年12月分享,其分享的是2013年的经验及资料
工资待遇(软件开发工程师) 基本工资:
加班工资:
津贴补助: 绩效工资: 年终奖:
小米科技有限公司 - 软件开发工程师工资待遇(北京,2013年)
上班时间(软件开发工程师) 能否准时下班: 周六周日是否加班: 每年带薪年假: 每周工作天数:
保险及福利(软件开发工程师) 社会保险(5险): 是否有公积金: 福利补贴: 工作满意度(软件开发工程师)
分享时间:2013年12月
(共个9分享)
还需查看更多信息?
看过此页面者还看过以下薪酬:
职位名 城市 公司名 学校 专业
北京 中科院遥感所
北京 北京国电通网络技术有限公司
北京 神舟通用数据技术有限公司
北京 北京天运人和科技有限公司
厦门 厦门智业软件工程有限公司
上海 上海酷星网络科技有限公司
上海 上海微创软件股份有限公司 重庆邮电大学 计算机科学与技术
新疆乌鲁木齐 新疆隆迪软件
最新工资调查每个公司的线上客服部都很神秘,我们经常会觉得在屏幕对面不停跟我们道歉、不停跟我们说亲的人肯定是个漂亮温柔又可人的懂事妹子。不过嘛,这个一定是人生三大错觉之一。
活动时间: 19:30:00
活动地址:海淀南路36号海润艾丽华酒店ARIVA三层伦敦厅
活动嘉宾:虚拟运营商产业联盟秘书长邹学勇 、 蜗牛移动陈艳、 国美张一凡
无论是传统媒体还是新媒体,都是生意,生意的好坏由账...[]
你卖到100亿或者没到100亿,和食客又有多少关系?100亿...[]
不必刻意腹诽传统媒体和硬广,不必把互联网思维当万能...[]
Copyright &
All rights reserved.小米的一个c++面试题
倒在这个面试题上,郁闷。。。。
有3个类,class A, class B(线程类), class C(线程类)
大概是这样的。
class B : public Thread
& & & & int i = 0;
& & & & while(i & 1000)
& & & & & & & i++;
& & & & & & & //这里需要把 i 传到A类去,不能用new A的方式,因为不能重复执行A类的构造函数。
class C : public Thread
& & & & int i = 0;
& & & & while(i & 1000)
& & & & & & & i++;
& & & & & & & //这里需要把 i 传到A类去,不能用new A的方式,因为不能重复执行A类的构造函数。
& & & & public:
&&&&&&&&& & int fromB(int _bi);
&&&&& & & & int fromC(int _ci);
& & & & & & int Add(int bi, int _ci);
B类线程和C类线程同时执行,假定一种环境,B类里while循环是i为1的时候,传给A类,C类里while循环是i为1的时候,传给A类,那么这个时候A类里执行Add,就是把B类传过来的i和C类传过来的i相加,也就是等于2。
请问该如何实现?
一个class中可以直接写while。。。。
这个应该是考察多线程资源安全的问题,应该需要用到mutex加锁。
线程之间传值不用异步动作和线程琐吗?
题目有问题,不能说传给A类。C++面向对象编程中,class定义的是类,实际使用的new出来的变量是实例化的对象。题目没有搞清楚什么叫做类,什么叫做对象。
估计题目想描述的是“传给A类的对象”,而且要求B与A传递给A类实例化的同一个对象,然后执行A类的对象实现两个数值相加。
我的方法,有两种思路:
1.使用设计模式的单件模式
2.直接在A类中定义两个静态成员变量分别对应FromA,FromB传递的值,统计时直接调用ADD方法即可
说到程序这事儿,有时候想
如果当时C的 static/const/extern&多兼容点汇编语言的 DATA,就不会有C++的什么事儿
如果当时C++的virtual/protected多兼容点指针的特性,就不会有第4代语言的事儿了
如果每一代语言能够把上一代的精华多保留一些,就不会有俺们猿类成天在群里瞎问的事儿了
要传给A,但是A又不能初始化,A又没有静态变量。。。。。。
B对应一个队列,C对应一个队列,A每次add前从两个队列里取数据,然后相加,取不到就阻塞,B和C的while循环里向队列添加数据,至于队列放到A里还是BC里看情况吧。
最近没有什么事情,复习下C11线程相关,这个题还是有点难度, JAVA应该更好实现。
我的实现,仅仅做参考: 环境是XCODE, 看我的博客,如有错误虚心接受是
// &main.cpp
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
//main.cpp
#include &iostream&
#include &MLClassA.h&
#include &MLClassB.h&
#include &MLClassC.h&
int main(int argc, const char * argv[])
& & // insert code here...
& & MLClassA* pccA = new MLClassA();
& & MLClassB* pccB = new MLClassB(0,100, *pccA);
& & MLClassC* pccC = new MLClassC(0,100,*pccA);
& & std::thread tThreadB([pccB](){pccB-&ThreadMainProducingNumber();});
& & std::thread tThreadC([pccC](){pccC-&ThreadMainProducingNumber();});
& & tThreadB.join();
& & tThreadC.join();
& & return 0;
////////////////////
//Class A header ///
///////////////////
// &main.cpp
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#include &iostream&
#include &MLClassA.h&
#include &MLClassB.h&
#include &MLClassC.h&
int main(int argc, const char * argv[])
& & // insert code here...
& & MLClassA* pccA = new MLClassA();
& & MLClassB* pccB = new MLClassB(0,100, *pccA);
& & MLClassC* pccC = new MLClassC(0,100,*pccA);
& & std::thread tThreadB([pccB](){pccB-&ThreadMainProducingNumber();});
& & std::thread tThreadC([pccC](){pccC-&ThreadMainProducingNumber();});
& & tThreadB.join();
& & tThreadC.join();
& & return 0;
///////////////////////////
//Class A implementation ///
///////////////////////////
// &MLClassA.cpp
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#include &MLClassA.h&
long MLClassA::Add(long al0, long al1) {
& & _l_sum += (al0 + al1);
& & std::cout && al0 && & + & && al1 && & = & && _l_sum&& std::
& & return _l_
void MLClassA::setFirstOperatrand(long al0) {
// & &std::cout && &set first operand & && al0 && std::
& & std::unique_lock&std::mutex& c_unique_lock(_c_mutex);
& & this-&_c_conditional.wait(c_unique_lock, [&]() -& bool { return _add_});
& & _add_completed =
& & _l_operand0 = al0;
& & this-&_c_conditional.notify_one();
void MLClassA::setSecondOperand(long al1) {
// & &std::cout && &set second operand & && al1 && std::
& & std::unique_lock&std::mutex& c_unique_lock(_c_mutex);
& & this-&_c_conditional.wait(c_unique_lock, [&]() -& bool { return !_add_});
& & _l_operand1 = al1;
& & this-&Add(_l_operand0, _l_operand1);
& & _add_completed =
& & this-&_c_conditional.notify_one();
/////////////////////////
//Class B header //////////
////////////////////////
// &MLClassB.h
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#ifndef __MLThread__MLClassB__
#define __MLThread__MLClassB__
#include &iostream&
#include &thread&
class MLClassA;
class MLClassB {
& & long _l_number_
& & long _l_number_
& & MLClassA& _cc_a;
& & MLClassB(long alNumber, long alNumberMax, MLClassA& arccA ):_l_number_max(alNumberMax),_l_number_current(alNumber),_cc_a(arccA){};
& & void ThreadMainProducingNumber(void);
#endif /* defined(__MLThread__MLClassB__) */
///////////////////////////
//Class B implementation ///
//////////////////////////
// &MLClassB.cpp
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#include &MLClassB.h&
#import &MLClassA.h&
void MLClassB::ThreadMainProducingNumber(void) {
& & long lI = _l_number_
& & while (lI &= _l_number_max) {
& & & & _cc_a.setFirstOperatrand(lI ++);
////////////////////
//Class C header ///
///////////////////
// &MLClassC.h
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#ifndef __MLThread__MLClassC__
#define __MLThread__MLClassC__
#include &iostream&
class MLClassA;
class MLClassC {
& & MLClassA& _r_cc_a;
& & long _l_number_
& & long _l_number_
& & MLClassC(long alNumber, long alNumberMax, MLClassA& arCcA):_l_number_current(alNumber), _r_cc_a(arCcA), _l_number_max(alNumberMax){};
& & void ThreadMainProducingNumber(void);
#endif /* defined(__MLThread__MLClassC__) */
///////////////////////////
//Class C implementation ///
//////////////////////////
// &MLClassC.cpp
// &MLThread
// &Created by Mertef on 12/19/13.
// &Copyright (c) 2013 Zhang Mertef. All rights reserved.
#include &MLClassC.h&
#include &MLClassA.h&
void MLClassC::ThreadMainProducingNumber(void) {
& & long lCurrent = _l_number_
& & while (lCurrent &= _l_number_max) {
& & & & _r_cc_a.setSecondOperand(lCurrent ++);
--- 共有 1 条评论 ---
不能以new A的方式操作。
问题都没讲清楚~~
我后来又想了一下,其实这就是一个共享环形缓冲器,B和C是生产者,不断的往缓冲器里写东西,在B和C写的这个过程中,A也可以读。
C++的语法都忘干净了,& 不过大致实现是这样:
& while(i & 1000)
& & & & & & & i++;
&&&&&&&&&&&&& if(i == 1){ a.fromB(i); a.Add(); }&& // 如果i为1调用a的fromB函数为a赋值
&&&&&&&& }
& while(i & 1000)
& & & & & & & i++;
&&&&&&&&&&&&& if(i == 1){ a.fromC(i); a.Add(); }& // 如果i为1调用a的fromC函数为a赋值
&&&&&&&& }
Add 函数 Add():& add 应该没有参数才对吧
if(this.int _bi == 1 && this.int _ci == 1){&& // 如果都为1调用a的add执行计算
&&& return this.int _bi + this.int _

我要回帖

更多关于 小米前端面试题 的文章

 

随机推荐