记一次失败的小米面试

直接上面试题吧,一面面试官很nice,有不会的会耐心引导,可惜自己太菜,二面面试官很快结束战斗,让我拍屁股走人了,自己水平太菜,以后继续努力吧!

一面:

1、介绍项目

2、说下索引的优点,自己谈的建立了索引就像是给一本书加了一个目录,这样的话去查找目录自然比一条条的去书里面查每一行文字要快的多。画出索引的结构图,这个在《高性能mysql》上看过,并说了InnoDB中主键索引跟二级索引叶子节点的区别,以及myISAM索引,说了下B+树的结构,以及这种结构非常适合于磁盘读写,可以减少IO次数,从而提高性能等。

3、讲讲Spring中最主要的特性,讲了下IOC跟AOP的个人理解。重点讲了IOC,IOC是控制反转,在不用spring控制反转前,我个人的习惯做法是在A类中依赖一个B类对象时,一般会自己手动new一个B类的对象出来,然后再进行使用,有了spring的IOC之后我便可以在配置文件中决定我生成哪个B类对象,然后在需要B类对象的地方只需要注入就可以了。这样降低了A跟B之间的耦合度,如果我要使用不一样的B的子类生成B类对象时,只需要修改配置文件,这样的效果是很不错的。有了IOC之后,创建对象的权利由我们手中转移到了spring框架中,减少了我们的工作量。

4、讲下jvm。主要谈了jvm的分区,以及每个分区的作用,谈堆区的时候又谈到了堆区分为新生代、老年代跟永久代。然后谈了新生代包括Eden区、Survivor区,然后Survivor区分为From跟To,以及在Eden区不足时会进行minor GC,然后什么比较大的对象会直接进入老年代了,以及什么时候进行Full GC了等等。

5、讲下数组跟链表的区别及各自的优缺点。既然这两种结构都有优点及不足,怎样能充分利用这两种结构的优点,然后当时首先进入自己脑子中的就是HashMap,然后谈了些HashMap的原理,提了些java8里面为解决拉链法造成链太长而使用红黑树了等等。

6、接我上面提到的HashMap,面试官又问了HashMap是否线程安全,什么是线程安全的。自己说了下ConcurrentHashMap,谈了些它的分段锁提高并发等。

7、说下AtomicInteger的原理,这个自己不太清楚,直接说的没太了解过。

8、说下HIVE,自己就说了些hive将sql映射成mapreduce任务等。

9、讲讲HBase,自己说了下它包括哪些部分,以及怎么存贮等。

10、讲讲Hadoop,自己主要说了HDFS以及mapreduce,还是拿经典的wordcount举例子。

11、说说linux中怎么统计一个文件中各个单词出现的次数,说下用到哪些命令就行。

12、给出了一个场景,假设有3台服务器来处理来到的请求,第一台服务器可以处理30个请求,第二台可以处理70个请求,第三台处理120个请求,如何实现在分配请求的服务器上时时分发请求,提示将三台服务器的IP作为key,value中的value。后面又提示往TreeMap上想,这个没答好。

13、说出TCP建立释放过程,自己画了TCP的三次握手跟四次挥手示意图。问了为什么四次挥手时需要2MSL等待。

14、说下TCP跟HTTP中keepalive的区别。

15、找第K大元素,说出快排的平均时间复杂度。

16、找前k大元素,说了还可以使用快排,堆排序也可以。

17、手写单例模式,写了懒汉:

public class Singleton{
private static Singleton sg;
private Singleton(){}
public synchronized static getInstance(){
if(sg==null){
sg = new Singleton();
}
return sg;
}
}

然后面试官提醒这样多个线程在同时调用getInstance()时都需阻塞着,而我们需要加锁的仅仅是在创建sg时需加锁,经面试官多番引导,终于写出了下面的样子,面试官告诉我这叫双检索。

public class Singleton{
private static Singleton sg;
private Singleton(){}
public static getInstance(){
if(sg==null){
synchronized(Singleton.class){ //只有在新创建单例时才有必要加锁
if(sg==null){//双检索避免重复创建单例
sg = new Singleton();
}
}
}
return sg;
}
}
一面大概1小时20分钟左右,面试官真的很nice,被面试也可以学到不少,然后是二面。二面面试官问了会不会c++,然后让说项目,问项目中用户id用的什么,我说公司用的是设备号,他说不用注册号吗,我说好多用户是不注册直接使用的,然后问具体怎么生成的,怎么让用两个手机的人对应到同一个用户,蒙蔽中。。。然后让写抽奖游戏,平时对这些不太感冒,不只咋搞,想了会说不会,然后面试官说这是最基本的。无奈自己太菜只能拍屁股走人了。二面就这样快速被ko了,还是踏踏实实多思考,多动手吧。


  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值