记一次小米一面面经。

记一次小米一面,潜水很久了,也分享一下。
面试官挺好,提前短信通知我面试时间。
上来自我介绍balabala。
看你实习过,问那个公司具体干什么的,你干了什么,怼项目,关于elasticsearch海量数据做过滤和统计。
看你简历上都是java,那我问你点java的东西把。

Q:你说你重写了hashcode,说一下你怎么写的?
A:我只是过滤和统计的时候用到了set和map所以要重写hashcode,SHIFT+ALT+S生成的。。。
Q:重写equels需要重写hashcode吗,为什么?
A:因为规定equels相等,hashcode必须相等,比如说hashmap、hashset添加的时候是先比较hashcode。
Q:==和equels的区别?
A:==是比较两个对象的引用,equals是比较两个对象的值。
Q:object类equals方法是怎么实现的?
A:不知道,没看过。(刚看了一下,实际上也是==)
Q:hashmap讲一下?
A:balabalabala...
Q:hashmap初始容量可以自己定义吗?
A:可以,但是必须是2的多少次幂。
Q:那我定义24呢?
A:那么初始容量是32.
Q:底层是怎么实现的?
A:我记得看过,忘了。。。(刚刚想起来,是先与16比较,如果比16大,对16做<<位运算把,好像是这样)
Q:hashtable知道吗?
A:知道,hashtable是线程安全的,锁住整个数组,基本已经淘汰了。可以用concurrenthashmap。(没有继续往下问concurrenthashmap)
Q:hashmap可以存null值吗,hashtable呢?
A:可以,不可以.
Q:final修饰的对象可以改变引用吗,可以改变值吗?
A:可以改变值,不能改变应用。
Q:volatile知道吗?
A:volatile内存可见balabala禁止重排序
Q:实现原理知道吗,内存屏障?
A:不知道。
Q:volatile是线程安全的吗,比如++操作?
A:不是线程安全的,因为++操作是三个操作,先读再加再写。
Q:static方法可以访问非static方法或变量吗?
A:不可以。
Q:为什么不可以?
A:...不知道,没研究过这个问题。
Q:那对象和类呢?
A:想起来了,因为static方法是属于类的,所以static方法是不能访问的对象的方法的,因为每个对象的值可能不一样。
Q:线程池用过吗?说一下常用的线程池?
A:用过,但是不记得常用的线程池,给他讲了一下线程池的原理,然后线程池的一些参数。
Q:keepAliveTime这个参数是干嘛用的吗?
A:知道,非核心线程的存活时间。
Q:那是怎么计算这个时间的?
A:从非核心线程闲置的时候开始计算(我猜的,他又问我确定吗,我说我确定)
Q:synchronize讲一下,sleep,wait?
A:balabalabala
Q:可重入锁知道吗,synchronize是否可重入?
A:知道,不可重入。对一个对象加锁后可以再对另外一个对象加锁。
Q:synchronize对static方法加锁?
A:锁住整个类。
Q:ThreadLocal知道吗?
A:不知道。。。
Q:说一下堆和栈?
A:balabalabala。
Q:新生对象一定放在eden区吗?
A:不知道。。
Q:那如果一个对象特别大,放在哪里?
A:老年区(他还问我确定吗,提示你的时候回给你下套...)
Q:看你用过spring,spring的拦截器知道吗?
A:不是特别了解,项目中用到过...然后给他讲了我的单点登录...   通过拦截器判断用户是否登录。
Q:看你用过redis,redis事务支持回滚吗?
A:不支持回滚,redis事务串行执行,执行失败也不回滚。
Q:考你两个算法题,两个链表,判断是否相交,找出相交的第一个点?
A:(后悔没刷剑指offer)用了最蠢的办法,插入到map里。。。
Q:25匹马,五条赛道。每条赛道跑一匹马,只能知道名次,不能知道速度,怎么找出前一二三名,用几次?
A:(想了3-5分钟吧,不想浪费对方时间,虽然知道是不是最优的)8次。
Q:有什么想问我的?
A:因为我是第一次正经面试...能不能给个评价?
Q:还可以(很中肯...)
ps:面试官很好,会适当引导。很感谢这位大哥。
#面经##内推##实习##小米##Java工程师#
全部评论
谢谢分享, 另外 synchronized 是可重入的。
28 回复 分享
发布于 2018-08-07 16:25
根据老夫多年的一面挂经验,还可以一般就是挂了。
点赞 回复 分享
发布于 2018-08-07 19:47
那个keepalivetime是通过workqueue的poll(time,unit)来进行判断的,如果超时没取到就是null,就结束线程,昨天刚好复习线程池看到
点赞 回复 分享
发布于 2018-08-07 18:08
对了 还问了linux top命令 我说我只做一些安装啥的 都是文件操作命令。。。
点赞 回复 分享
发布于 2018-08-07 17:00
赛马那题,昨天看的面经里也有,我要去百度下了
点赞 回复 分享
发布于 2018-08-07 16:03
楼主是校招内推么?什么岗位呀?
点赞 回复 分享
发布于 2018-08-07 16:00
大对象并不是大于某一个门限值直接扔到老年代,这个只在serial和parNew中起作用
点赞 回复 分享
发布于 2020-07-05 09:12
老哥你这头像有点秀啊
点赞 回复 分享
发布于 2019-03-08 11:48
楼主,谢谢你的面试经验分享,那道相交链表的,我写了一个做法,你帮我看看是不是这个意思? public class EqualsNode {     private static Node root1 = null;     private static Node root2 = null;     private static Node point1 = new Node(50);     private static Node point2 = new Node(500);     public static void main(String[] args) {         initRoot1();         initRoot2();         printLink(root1);         printLink(root2);         System.out.println(getFirstEqualNode(root1, root2));     }     public static int getFirstEqualNode(Node node1, Node node2) {         if (node1 == null || node2 == null)             return -1;         int node1Index = 0;         int node2Index = 0;         while (node1 != null) {             Node node2Temp = node2;             while (node2 != null) {                 if (node1 == node2) {                     System.out.println("node1Index = " + node1Index + " | node2Index = " + node2Index);                     return node1.value;                 }                 node2 = node2.next;                 node2Index++;             }             node2 = node2Temp;             node1 = node1.next;             node1Index++;             node2Index = 0 ;         }         return -1;     }     public static void printLink(Node root) {         Node tempNode = root;         while (tempNode != null) {             System.out.print(tempNode.value + "\t");             tempNode = tempNode.next;         }         System.out.println();     }     public static void initRoot1() {         root1 = new Node(5);         root1.next = new Node(4);         root1.next.next = point1;         root1.next.next.next = new Node(8);         root1.next.next.next.next = point2;     }     public static void initRoot2() {         root2 = new Node(8);         root2.next = point1;         root2.next.next = new Node(12);         root2.next.next.next = new Node(4);         root2.next.next.next.next = point2;     } } class Node {     int value;     Node next;     public Node(int value) {         this.value = value;     } }
点赞 回复 分享
发布于 2019-03-08 10:44
优秀啊付锅,今天小米打电话说约面试把我惊了,,大佬保佑一波
点赞 回复 分享
发布于 2018-08-29 19:39
【人工智能】【校招】深圳追一科技2019校园招聘提前批开始啦~ 即日起至9月15日投递机器学习、算法研究、数据挖掘、语音语义、前端/Java开发等技术类岗位,即可获得免笔试环节,直接进入面试,提前拿秋招offer~ 简历请投https://app.mokahr.com/campus_apply/wezhuiyi 关注追一招聘公众号,获取更多一手校招信息~
点赞 回复 分享
发布于 2018-08-22 12:52
感觉面试你的是志哥
点赞 回复 分享
发布于 2018-08-19 15:46
赛马那道题不是7次吗?
点赞 回复 分享
发布于 2018-08-19 00:41
问的很细了,楼主很棒啦~
点赞 回复 分享
发布于 2018-08-18 22:56
大佬,你应聘的是什么岗位啊?
点赞 回复 分享
发布于 2018-08-08 19:26
校招提前批免笔试明天开始面试
点赞 回复 分享
发布于 2018-08-08 18:44
楼主在哪里实习过呀?前些天投了小米内推,一直没消息,感觉简历没过。。。o(╥﹏╥)o
点赞 回复 分享
发布于 2018-08-08 18:16
小米校招开始了?
点赞 回复 分享
发布于 2018-08-08 09:29
求大佬的内推方式
点赞 回复 分享
发布于 2018-08-07 20:57
在哪内推的java岗位啊
点赞 回复 分享
发布于 2018-08-07 18:42

相关推荐

给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
11
183
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务