admin管理员组

文章数量:1794759

小米面试Java开发工程师(实习)

小米面试Java开发工程师(实习)

文章目录
  • 一、
    • 一面
    • 二面
  • 二、
    • 一面
    • 二面
    • 三面
  • 三、
    • 一面
  • 四、
    • 一面
  • 五、
    • 一面
    • 二面
  • 六、
    • 一面
    • 二面
  • 七、
  • 八、

要求:

  • 熟悉Linux开发环境;
  • 熟悉web服务开发,了解web服务框架,了解web安全
  • 掌握常用的设计模式;数据结构与算法
  • 了解常见的分布式存储计算框架
  • 一、 一面

    1、自我介绍? 2、小米岗位北京和武汉怎么选? 3、讲讲自己实习经历最深的一次?实习团队氛围?刚进公司有压力吗? 4、算法用的多吗?自己平时怎么学习的?最大的挑战? 5、写代码(剑指offer):平衡二叉树? 6、tcp / udp? 7、操作系统:调度算法? 8、进程 / 线程?还了解吗? 9、ip的包结构?抓过包吗? 10、三次握手?去掉一次,优点、缺点? 11、Linux了解吗?说下基本常用的命令? 12、有什么问题问的?

    二面

    1、自我介绍? 2、讲一下创新基金项目?可以在公司用吗? 3、实习经历?学到了什么?在公司遇到问题怎么解决?遇到的挑战说几个?在公司最有成就感的事情? 4、https?常用的状态码? 5、git常用命令?tag标签?分支? 6、对测开的理解?自动化测试工具用过吗?junit before和after区别? 7、mvc了解吗? 8、意向哪个城市? 9、对小米的了解? 10、有问题要问吗?

    二、 一面
  • 编程题: 链表翻转
  • HashMap底层结构, 插入操作, 扩容操作, 为什么要扩充2倍长度
  • hash表与二叉树的区别
  • static从加载到使用, static int a = 10;会直接初始化为10吗
  • ArrayList与LinkedList的区别
  • ArrayList插入无序数后如何排序
  • 讲一讲volatile, 为什么单例模式二重校验锁下实例要声明为volatile
  • 讲一讲synchronized, 锁升级, 讲一讲轻量锁与偏向锁, 两个线程在轻量锁下有什么操作
  • 讲一讲gc, CMS有哪些步骤
  • 项目是自己做的还是跟别人一起合作的
  • 如果你和同事对开发意见不一, 你会怎么处理
  • 有同事想要把代码写的很完善, 你想把代码写的简单, 如何处理
  • 能来实习吗
  • 二面
  • 自我介绍
  • 编程: 使用堆实现队列【思路是对的, 两个堆弄错变量名了, 面试结束才发现…】
  • 微服务如何实现负载均衡, 如何判断服务是否为空闲
  • Redis有哪些数据结构
  • 订阅发布有用过吗
  • 哈希一致性当两个节点邻近如何处理
  • CAS
  • volatile
  • JVM, JMM
  • 字符串常量池, 多个字段拼接用+好还是StringBuilder.append()好
  • 三面
  • 自我介绍
  • HashMap底层, 数组长度为什么2的幂次方, 扩容后原数据索引会变吗
  • 事物隔离级别以及相应的处理方法
  • Linux中某个Java程序内存消耗大, 如何查找
  • Hystrix如何实现熔断, 如何实现限流 …
  • 编程题: 打印树的第k层节点
  • 三、 一面
  • 除了==方法,还有什么方法比较属性值是否相等(序列化,反序列化)

  • object有哪些方法

  • 快速排序实现(手写代码)

  • 合并两个链表(手写代码)

  • 树的最大距离

  • 二分法排序

  • 单例模式(饿汉式,懒汉式)手写代码

  • 工厂模式

  • hashmap(concurrenthashmap)

  • 基本数据类型,拆包解包

  • wait,sleep,notify,notifyall

  • spring(ioc)

  • 事务四大特性,讲一讲原子性,一致性

  • 事务的隔离级别

  • 数据库的索引原理

  • 实现多线程的四种方式

  • 除了new还有哪些方式创建对象

  • synchorized和volatile区别

  • 四、 一面

    1、先是自我介绍,然后让我讲讲做项目的流程; 2、紧接着又出了一题编程题,从前后两边查找指定字符出现的个数; 3、怎么判断一棵树是不是二叉搜索树; 答:可以判断给定二叉树中序遍历之后是不是有序的; 4、面试官接着问我怎么判断这个序列是不是有序的;

    五、 一面
  • 谈谈mysql存储引擎,索引,辅索引底层结构。
  • 讲讲redis里面string的底层是怎么实现的。
  • 给定一个ip地址比如221.130.111.109/30,指出这个IP地址的网络号,主机号,以及子网数。这个地址属于那一类ip地址(A,B,C)类。
  • 讲讲TCP三次握手的具体流程。
  • 老问题,一个页面从输入URL到页面加载显示完成,这个过程都发生什么?
  • 如果上面的是基于HTTPS的请求,会增加哪些流程呢(即HTTPS请求的流程)。HTTPS里面的对称加密的密钥是怎么发送的,能用RSA的私钥加密比它大的数据吗?
  • 手撕代码1: 输入两个链表,每个链表代表一个数,对这两个链表进行加法运算,输出的和也是一个链表形式,比如1->2->3->4, 2->3->7,对这两个链表进行加操作,1234+237=1471,输出1->4->7->1。
  • 手撕代码2: 镜像二叉树,递归非递归。
  • 二面 什么是mybatis的一级缓存和二级缓存,区别? 如何实现缓存与DB的一致性? redis有哪些数据结构,redis的持久化机制,redis的有事务吗,怎么实现的。 发生缓存击穿或者缓存穿透的情况该怎么解决。 java容器类的层次结构,分别讲一下各种容器的原理,LinkedList的删除操作怎么实现;TreeSet的add操作怎么实现的,详细一点;HashTable怎么实现线程安全;LinkedHashMap实现机制,如何保证添加元素的有序性。 LRU是什么,如何实现一个LRU缓存。 手撕快排,前后序遍历非递归,求一个二叉树的高度。 根据前序和后序遍历之后的两个字符串,求后序遍历 linux命令,你用过哪些。 分布式锁有哪些实现方式,大概讲讲怎么实现的分布式锁(ZooKeeper的实现版不记得了)。 讲讲redis哨兵机制 redis集群中如何知道某个节点挂了,心跳机制;怎么去实现心跳机制。 六、 一面
  • 简单介绍自己,之后开始写代码
  • 两个单链表合并
  • 二叉树层序遍历
  • 多个链表合并
  • 给一个target在数组内找两数相加和为target的
  • 二面
  • 简单介绍,稍微问了下项目,但是项目太水增删改查没有多问。
  • 一个排列组合题,脑抽没答出来,n个球放m个盒子的问题,分组讨论
  • 网络,为什么三握手,两握手行不
  • 编译原理,1.1+(2.2-3.3) 怎么做,应该是词法分析器吧。记不清了。不会
  • 迷宫问题的化简和应用,两端并行
  • 操作系统,线程和进程
  • 七、

    1.类的成员函数和数据成员分别存在哪里,类大小的计算 2.如何禁止构造函数的使用 3.如果禁止类实例化时候的动态分配方式 4.引用和指针的区别 5.实现一个类成员函数,不允许修改类的数据成员 6.那些关键字可以修饰线程安全的变量 7. TCP、UDP穿透问题(一脸懵逼,面试官解释了就是内网外网间,我说了NAT,但是NAT是网络层的,跳过了) 8. TCP断开过程 9. 场景题:中英文字符计数问题(只会简单的,复杂的没想明白) 10. 手撕代码:利用无序数组非递归方式建立BST,并迭代中序遍历输出

    八、

    1、Java中的集合类有哪些了解呢? 2、项目中用到过哪些缓存? 3、ArrayList和LinkedList的区别? 4、linux了解怎么样。各个用户之间的权限了解吗 ? 5、手写代码:求两个链表相交。 6、新建线程的方式,有什么区别 7、Thread的run方法和start方法的区别是什么? 8、怎么关闭线程? 9、TCP为什么是三次握手和四次挥手? 10、TCP和UDP区别?

    虚拟机 :类装载子系统 运行时内存 字节码执行引擎 运行时数据区包含:堆 线程栈 本地方法栈 方法区 程序计数器

    tcp udp : udp 8 TCP首部开销大 固定首部20字节 不可靠连接,传输效率高,正确率低 TCP 字节流 也用缓冲区,可能半个数据包 也可能很多数据包 UDP面向报文

    字符流默认使用缓冲区

    集群 分布式 负载均衡(根据某些规则进行分流)

    说说几种常见的线程池及使用场景

    1、newSingleThreadExecutor

    创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

    2、newFixedThreadPool

    创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

    3、newCachedThreadPool

    创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

    4、newScheduledThreadPool

    创建一个定长线程池,支持定时及周期性任务执行。

    本文标签: 小米工程师java