小米二面面经

9 篇文章 0 订阅

昨天刚刚面完小米二面,一面的面经由于没有及时整理,所以记得的不多,就把自己印象深刻的记下来了……_§:з)))」∠)_

二面大概一个多小时的样子,涉及的知识面比较广,刚开始就先来了两道算法题……_§:з)))」∠)_,不过还OK,比较常规的那种。下面就把这次面试中问到的问题整理了一下~  希望对要面试的小伙伴有帮助✧٩(ˊωˋ*)و✧

(博主有的问题写了回答的思路,其他没有的,问问度娘基本都能找到,就不放具体的博客链接了~)

算法题:

1、给定一个数组,以及一个值sum,求数组中两个数相加为sum的值有哪些?

方法1:先快排,使得数组有序;然后变量i,j分别从左右两边遍历,当和值为sum时,就找到了;当和值大于sum的时候,j--;当和值小于sum的时候,i++………直到

i==j,结束循环。

方法2:利用hash表的特性,将数组值存放在hash表中,i从头遍历,每遍历到一个数, 都用sum减去该数,得到差值后,查找这个hash表中是否存在,如果存在,就找到了;如果不等于的话,i++;依次判断,直到判断到倒数第二个数的时候。

2、判断一个数是不是2的幂次方?

思路:(num&num-1)==0

数据库:

1、索引的底层数据结构是什么?特点?(B+树)

2、为什么不使用其他的数据结构来代替?(涉及到内存预读)

3、有没有使用过联合索引?最左前缀原则及情景题

4、项目中如何防止查询返回大量数据?(limit)

5、情景题写sql语句——

①统计一个表中type字段下的元素的种类——

select count(*) from 表名 group by type;

②去掉type字段下的重复数据——

select distinct type from 表名;

6、redis数据存储在哪?采用单线程还是多线程?(内存,单线程)

7、为什么redis采用单线程,速度还是很快呢?

Git:

1、Git提交的命令?(add及commit)为什么要先add (暂存区)

2、合并到远程分支的命令?

基础题:

1、==和equals的区别?

2、抽象类和接口的区别?

3、java中异常的分类,以及常见的异常?

4、重载和重写区别?

计算机网络:

1、从网页输入一个url,到出现页面的整个过程?描述一下

2、常见的http状态码,以及含义?

操作系统:

1、有没有使用过linux?了解哪些常用命令?

线程:

1、start方法和run方法的作用及区别?

框架及项目:

1、依赖注入的方式有什么? (手动装配和自动装配)

依赖注入方式:手动装配 和 自动装配

①手动装配:一般进行配置信息都采用手动

基于 xml 装配:构造方法、setter 方法

基于注解装配:

②自动装配:struts 和 spring 整合可以自动装配

byType:按类型装配

byName:按名称装配

constructor 构造装配,

auto: 不确定装配

2、为什么要使用maven?

3、项目中在使用spring框架的过程中,有哪些让你印象深刻的地方?

4、前后端使用json传递数据

5、整个项目的流程,任务分配?

6、邮箱验证,支付模块,购物车模块如何实现的?

7、订单模块的生成、订单状态的不同情况及流程,定时器?

8、使用过的日志框架?(log4j)还知道什么其他的?

9、xml文件中,SQL语句上的id里面的内容是什么?(对应的方法名)

 

好啦,差不多就是这些,面试加油!

 

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值