您的位置:首页 > 职场人生

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

2020-03-27 19:16 1176 查看

文章目录

  • 总结
  • 前言

    最近在投递实习岗位,面试了腾讯跟小米两家公司,分享一下经历。

    正文——小米篇

    投递渠道:BOSS直聘。

    BOSS直聘上有个小米的面试官私聊我,岗位是Android开发实习生,由于我是学Java的,Android跟Java还是有些相关的,就在10月25号投递了。

    一面经验

    面试时间:10月28号下午4点。

    一个北京的电话打给我了,问我什么时候方便面试,我说现在,然后过了一会就开始了。

    面试内容

    • 简单做一下自我介绍
    • 提了一下简历中的小工具是用什么语言开发的(Java)
    • 确认了一下我的岗位意向是不是Android开发(简历上写的是Java意向)
    • String、StringBuilder、StringBuffer的区别(参考这篇博客戳这里
    • equals和==的区别(参考这篇博客戳这里
    • equals和hashcode有什么关系呢
    • 介绍一下static关键字
    • final和finally的区别(参考这篇博客戳这里
    • Java基本数据类型有哪些(boolean、byte、short、int、long、float、double、char)
    • 为什么要分基本数据类型和非基本数据类型
    • int和Integer有什么区别(参考这篇博客戳这里
    • int可以为null吗(答案是不可以的,可以自己试试看)
    • 重写与重载的区别(参考这篇博客戳这里
    • Java有哪些集合(根据继承关系回答)
    • 那你介绍一下ArrayList和LinkedList的区别(参考这篇博客戳这里
    • 那如果要线程安全的话可以使用什么(因为我上面同时提到了都不是线程安全的,如果要线程安全的话可以使用Vector,但是Vector的锁比较笨重,效率低下,可以使用
      Collections.synchronizedList
      转换为线程安全)
    • ArrayList的扩容机制
    • 假设有大量的数据需要add到ArrayList中,这时候就会不断地扩容,扩容会影响性能,那如何避免呢(一开始没想出来,后面面试官直接跟我说可以在初始化的时候输入一个比较大的初始容量)
    • 讲一下ArrayList具体是怎么扩容的(看一下源码就明白啦)
    • 介绍一下wait()和sleep()的区别(主要从类、是否释放锁、唤醒角度讲)
    • 那你介绍一下强引用、软引用、弱引用、虚引用的区别(我那时候忘记了,面试官就跳过了,不过可以参考这里戳这里
    • 问了我的Android基础咋样(好多都忘了,面试官也跳过了)
    • 那我问你一些算法的吧,看你之前参加过蓝桥杯(orz,都没进过国赛)
    • 讲一下链表的反转吧(我是从使用额外空间到不使用额外空间讲的,额外空间的话,可以使用一个List,遍历链表同时添加元素到List中,最后倒叙遍历List,将其元素添加到新的链表中;不使用空间的话,可以用尾插法的方法对节点进行添加)
    • 单向链表如何拿到倒数第n个值(可以参考这篇博客【LeetCode】详解删除链表的倒数第N个节点
    • 设计一个方法,输入参数为n,返回2的n次方(最暴力的就是for循环n次,然后每次乘2,优化的话一时半会想不出来,面试官提示用分治法,比如n=8,不必计算8次,因为28可以拆成24 * 24;最优解就是用位运算左移了)
    • 使用过git吗,界面还是命令行(命令行),用了哪些命令行(把印象中的都说了一下,比如什么init、add、commit、push、pull、clone、log、merge、reset)
    • 除了merge,还有哪些合并代码的命令行,了解过rebase吗(没有了解过)
    • 介绍一下你的YY实习经历吧,平常都做了什么
    • 可以实习的时间,能实习到什么时候

    面试总时长:28分37秒

    整理了之后才发现原来问了这么多问题,因为大部分问题都是我之前写过博客的,所以回答比较快,基本上面试官一问我就答出来了。

    二面经验

    面试时间:10月28号下午7点。

    一个小米的面试官加了我微信,问我什么时候方便面试,我说现在,然后就出去外面开始面试了(当时正在上课,外面的风挺冷的)

    PS:由于微信电话没有录音,只能凭印象来写面试内容

    面试内容

    • 给你一个链表,如何获取第n个节点(我一开始说直接遍历n次)
    • 那时间复杂度多少,能不能改成O(1),允许对链表进行修改
      (外面风大,一开始没听清楚,就跟面试官说了一下,面试官很惊讶我竟然在这么冷的外面面试,他说其实可以不用那么急的,换个时间也是可以的。)
      (想了一下可以加个前缀,但是后面的思路就卡住了,面试官一直给我提示,但是最后还是没想出来)
    • 给你一个单向链表,如何删除指定节点,时间复杂度O(1)
      (如果没记错的话,应该是问这个问题,还是答得不好,面试官表示理解,说我在外面没有纸和笔,也比较冷)

    后面就是聊天环节了

    • 用过git吗(用过)
    • 好的,用过Linux吗(用过)
    • 好的,那如何如何查找文件(find)
    • 好的,学Android会比较累,其实就是加班多(我:加班多没事啊,我之前在YY平均一天13小时)
    • 有点忘了。。。
    • 那基本上就这样吧(我:只问这么少吗?)
    • 因为上一面的面试官说你基础还不错,我就默认你pass通过了(我:可以可以,那还有下一面吗)
    • 没有了,其实决定权在我这,主要是目前比较缺人(我笑:哈哈,可以可以)
    • 忘了。。。

    面试总时长:16分19秒

    二面其实难度不大,只是我这边有点问题,面试官也比较友好。

    总结

    小米面试都挺好的,有不懂的话或者解释不到位面试官会给相关的提示,算法的难度比较简单(orz,但是二面的算法我有点懵)。虽说是Android岗位面试,但是问的Java也挺多的(可能是因为我不会Android)。

    今年的Android跟IOS都比较缺人,那时候投递小米的时候跟面试官说我没有Android经验,面试官说基础好就行,可以进去再学(可见有多么缺人)。

    哦对了,本来想顺便分享一下腾讯的实习经历,结果发现有点晚了(今天从广州去深圳现场面试,还是挺累的,想早点睡),就放在下一篇文章【实习之路】腾讯、小米日常实习生面试经历分享——腾讯篇,感兴趣的同学可以先关注一下我,避免迷路了~

    • 点赞 4
    • 收藏
    • 分享
    • 文章举报
    Hertter 发布了57 篇原创文章 · 获赞 299 · 访问量 7万+ 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: