字节抖音后端一面

字节抖音后端一面

时间:2020/01/16 15:00

历时:1小时01分钟

第一次面试,真的很紧张,说话吞吞吐吐,应该凉了,不过面试官人很nice,是一次不错的经历,查缺补漏,争取下次更好

  • 自我介绍

  • 开始聊专业知识:

    • java中的hashmap 和 concurrenHashmap的区别?
    • hashmap和hashTable的区别?为何一个线程安全一个线程不安全?
      • hashmap线程不安全,hashtable线程安全,hashTable方法上加了synchronize关键字
    • concurrenHashMap如何实现线程安全且并发性能比hashTable高?
      • 锁分段
      • 解释下锁分段?
        • 这个太菜了,直接跟面试官说没研究过concurrenHashmap的源码,不想浪费自己的时间
    • 聊一下volatile作用?
      • 我答了实现共享变量的可见性
      • 然后聊聊可见性实现原理:
        • 我答了通过在两个操作之间插入内存屏障禁止操作系统重排序
      • 最后聊聊volatile使用场景
        • 我答了在共享变量读多写少的情况。。。
    • 聊一下synchronize关键字实现原理?
    • synchronize的锁升级?
      • 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁
    • 有用过java中的队列吗?
      • 我说有,我使用过优先队列
      • 然后问我java中priorityQueue线程安全吗?
        • 不安全
      • java中的队列有线程安全的队列吗?
        • 我蒙了阻塞队列hhh
      • 怎么实现线程安全的?
        • 不清楚
  • 聊聊数据库吧

    • MySQL事务隔离级别说一下?
      • 说了那四个
    • 可重复读如何实现?
      • 我一开始是说了不可重复读实现是, undo日志保存的是开始前数据值,redo日志保存的是事务结束后数据的值。不可重复读是每次读undo日志的最近版本,所以可能对同一数据读到不同的版本,而可重复读是因为,在读时加行锁,因此数据能保证统一,但是没有对表加锁,所以不能知道是否有新的数据插入,所以可能会出现幻读
    • MySQL中有几种类型的锁?
      • 我答了,页级锁,表级锁,行级锁
    • 更新,查询数据库记录时是如何加锁的?
      • 我答的是,更新时加表锁,查询时加的是行锁(这块我也不是很清楚,因为还在复习,得好好补补了)
    • 聊一下索引,MySQL的索引是什么数据结构
      • B+树
    • 为什么用B+树?
      • B+树,多叉平衡树,可以在较少的IO次数下,完成我们的查询工作
    • 聊一下最左匹配原则
  • 看你项目中有用到redis,聊一下

    • redis你在项目中怎么用
      • 保存token
    • redis在项目你们有几台
      • 一台
      • 挂了怎么办?
        • 我说我配置了持久化
  • 计网

    • tcp三次握手,四次挥手过程
    • 最后的等待2msl的作用
  • 最后15分钟做一道算法题?

    • leetcode单词分割,我太菜了没写出来,应该gg了
发布了254 篇原创文章 · 获赞 136 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41922289/article/details/104010775
今日推荐