1、hashmap的结构

hashmap底层的数据结构在jdk7和jdk8是不一样的。在jdk7时为Entry数组+链表,在jdk8时为Node数组+链表+红黑树,当链表存储的元素个数大于等于8时,不再采用链表结构,此时判断一下当前数组长度是否大于64,如果大于,则将链表转为红黑树。没有则将选择扩容。

2、为什么负载因子是0.75

hashmap是一个数据结构,它要考虑时间和空间的效率问题。我们假设负载因子为1的时候,空间利用率为百分之百,但是存储的元素多了,发生hash冲突的概率就会很大,底层的链表或者红黑树层数会比较高,查找效率就会降低。我们再假设负载因子为0.5的时候,存储的元素个数少了,发生hash冲突的概率变小了,查找效率会提升,但是空间利用率却变成了百分之五十。综合考虑选择了0.75,这样空间的利用率比较高,也避免了很多的hash冲突。

HashMap的负载因子为什么默认是0.75?

3、volatile的作用和原理

volatile的主要作用就是保证共享变量的可见性。它提供了一个域变量无锁的机制,当一个变量被声明为volatile时,告诉线程这个变量可能会被其他线程修改,线程在写入变量时不会把值缓存在寄存器或者其他地方,而是会把值刷新回主内存。当其他线程读取该共享变量时,会从主内存重新获取最新值,而不是使用当前线程的工作内存中的值。
它还可以用来保证有序性,java内存模型的编译器和处理器允许对不存在数据依赖的指令进行重排序来提高运行性能。但是有时候可能会出现创建一个对象时还没初始化就已经给它赋值给了成员变量的问题。我们可以使用volatile借助内存屏障来禁止重排序。

4、什么是原子性

原子性就是一个事务的若干操作要么同时成功,要么一起失败,只要其中的异步操作失败,那整个事务就是失败的。

5、volatile能不能保证原子性

不能,它只能保证可见性和有序性。

6、数据库隔离级别

有四种隔离级别:读未提交,读已提交,可重复读、串行化。
读未提交什么问题都没解决,脏读、不可重复读、幻读都有可能会出现
读已提交解决了脏读问题
可重复读解决了脏读和不可重复读问题
可串行化解决了脏读、不可重复读、幻读问题

7、幻读举个例子

比如我一开始在学生表里面根据学号查找多有m个学生,此时另外一个事务新增了一名学生,我后来想再确认一下人数,但是却发现此时的学生人数变成了n个,两次查询的结果不一样。

8、innodb如何解决幻读

使用间隙锁,在一个事务进行操作的时候,给表中不存在的数据范围加上间隙锁,防止其他的事务进行在此范围内进行操作,解决了幻读问题。

9、gc算法有哪些

根据分代收集理论,有标记清除、标记复制、标记整理算法

10、可达性分析

判断一个从该对象到GCRoots有没有可以到达的引用链,如果有,说明该对象还在被引用,不应该被回收,如果没有,说明这个对象不可能在被使用,它在垃圾清理的时候应该被回收掉。

11、判断gcroots的原则是什么

在java中固定可以作为GC Roots的对象主要包含:
1、在虚拟机栈中引用的对象
2、在方法区中类静态属性引用的对象
3、在方法区中常量引用的对象
4、被synchronized同步锁持有的对象

算法题 合并有序链表 自己写测试用例

package com.ithema.pattern.decorator;public class Test {static class NodeList{int val;NodeList next;public NodeList(int val) {this.val = val;}}public static void main(String[] args) {NodeList node1=new NodeList(2);node1.next=new NodeList(6);node1.next.next=new NodeList(9);node1.next.next.next=new NodeList(15);node1.next.next.next.next=new NodeList(27);node1.next.next.next.next.next=new NodeList(50);NodeList node2=new NodeList(1);node2.next=new NodeList(5);node2.next.next=new NodeList(10);node2.next.next.next=new NodeList(16);node2.next.next.next.next=new NodeList(37);node2.next.next.next.next.next=new NodeList(60);NodeList res= mergin(node1,node2);while (res!=null){System.out.println(res.val);res=res.next;}}private static NodeList mergin(NodeList node1, NodeList node2) {if(node1==null) return node2;if(node2==null) return  node1;NodeList dummy=new NodeList(-1);NodeList cur=dummy;NodeList p1=node1,p2=node2;while (p1!=null && p2!=null){if(p1.val>p2.val){cur.next=p2;cur=p2;p2=p2.next;}else {cur.next=p1;cur=p1;p1=p1.next;}}while (p1!=null){cur.next=p1;cur=p1;p1=p1.next;}while (p2!=null){cur.next=p2;cur=p2;p2=p2.next;}return dummy.next;}
}

作者:渣&&
链接:https://www.nowcoder.com/discuss/813047?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

【面经问题总结】小米日常实习 一面相关推荐

  1. 2021年小米日常实习一面(自己整理的答案)

  2. 【实习之路】腾讯、小米日常实习生面试经历分享——小米篇

    文章目录 前言 正文--小米篇 一面经验 二面经验 总结 前言 最近在投递实习岗位,面试了腾讯跟小米两家公司,分享一下经历. 正文--小米篇 投递渠道:BOSS直聘. BOSS直聘上有个小米的面试官私 ...

  3. 腾讯暑期日常实习前端面试

    腾讯暑期日常实习前端面试 我是23届毕业的,想找个暑假的实习,但是今年是21年所以只能走日常实习,看了看没有多少公司要日常实习的,只有腾讯.字节.小米.美团招日常实习,所以我先投了腾讯和美团试试,这次 ...

  4. 字节跳动暑期日常实习前端面试

    字节跳动暑期日常实习前端面试 这次面试的字节跳动的幸福里部门,本来我是不想面字节跳动的,毕竟字节的算法难度是公认的高,而这又是我的薄弱环节哈哈,不过群里加了个老哥非得让我试试,那我就试试吧哈哈哈,不过 ...

  5. 美团暑期日常实习前端面试

    美团暑期日常实习前端面试 这次面的是美团基础研发平台的大数据分析部门,好家伙这个名字一听就很牛逼,其实我早就投递简历了,但是一直没做笔试,所以这个流程就走不下去,上个周六做了做笔试,在此点名表扬美团, ...

  6. 前端怎么自我介绍_未雨绸缪,小米前端实习面经

    前一篇文章中说到了我准备开一个新系列用于整理周围人面试的一些经历,本文是她面试小米的一份经历,也是这个系列的第一篇文章,投稿人是我同校同学,虽然本科就是一个学校的,但直到研究生才认识,之所以说她未雨绸 ...

  7. 快手算法岗日常实习面试经验

    快手算法岗日常实习面试经验 时间:2019.4.3 10:00 地点:北京市海淀区上地西路6号(快手总部)-E座 这次快手的面试一共两面,每一场面试都是先针对简历问问题然后手写一道算法题.由于我简历里 ...

  8. 字节跳动日常实习一二三面面经(后端开发)

    岗位:后端开发日常实习 语言:Go 背景:双非硕,主语言是C++,算法还行,简历上烂大街的webServer 没学过Go所以面试过程中没有涉及到Go语言的问题,都是问的C++. 一面 时间:11.15 ...

  9. 【已收到Offer】小米前端实习面经(一、二面)

    面试无非就是考察计算机基础 + 算法 + 语言特性 + 项目.不过呢,根据我的面试题经历,其实每个公司在面试候选人时,侧重点是不同的. 例如你面试腾讯的话,可能网络这块会问的多一些:面阿里时,可能 J ...

最新文章

  1. ios php 序列化,PHP常见的序列化与反序列化操作实例分析
  2. IT服务台的进化(3)--虚拟服务台
  3. 用Python做垃圾分类
  4. jvm一个线程的成本
  5. 魅影远程监控(企业版)
  6. Redis(九):Redis特殊类型之geospatial
  7. showdoc如何创建文件夹_showDoc生成文档
  8. python itertools卡死_python中的itertools的使用详解
  9. cad计算机土方软件,飞时达土方计算软件FastTFT
  10. 安装linux系统 黑屏,Ubuntu 16.04安装时显示器黑屏处理
  11. 机器学习 —— 联合概率分布
  12. mysql 日文乱码_Mysql 导入日文数据乱码问题
  13. linux的复制粘贴
  14. redis解决冗余备份
  15. Mac 无法打开淘宝,天猫,京东等
  16. 人名和成绩一起排序_Excel怎么按姓名笔画和拼音排序,后面的数字跟着一起变动...
  17. 【C】C语言int型数组转化为char型字符串数组
  18. robot—如何调用上传文件的接口,表单传值
  19. 东华大学 oj1——求长方形的面积和周长
  20. 图文详解 IntelliJ IDEA 15 创建 Maven 构建的 Java Web 项目(使用 Jetty 容器)

热门文章

  1. 如何使TOOLBOX变成中文名称
  2. RK3568平台开发系列讲解(调试篇)PCIe调试详解
  3. 移动端UI界面设计之APP字体排版原则| 萧蕊冰
  4. Linux就该这么学——Day2
  5. Note++ 常用功能高级用法
  6. 两点计算机械手旋转中心
  7. 群晖aria2 bt没速度_群晖终于开窍了!联手迅雷推出下载套件 NAS功能再上一层楼...
  8. 杨世忠:“周转”知识终圆航天梦
  9. 省市县数十万数据集PM2.5面板数据(更新至2020年)
  10. cp1025支持linux,HP LaserJet Pro CP1025 系列彩 技术规格 | HP®People's Republic of China