思科基础组面试(部分)

面了三轮,前面两轮因为录的视频坏了,很多问题忘了。

Round 1

  • Q:举例说明为什么hashmap线程不安全
    A1: JDK1.8 HashMap线程不安全体现在:数据覆盖:
    在这里插入图片描述
    其中第六行代码是判断是否出现hash碰撞,假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的,当线程A执行完第六行代码后由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处插入了元素,完成了正常的插入,然后线程A获得时间片,由于之前已经进行了hash碰撞的判断,所有此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全。
    我对比了一下ConcurrentHashMap在相同地方,采用的是CAS操作:
    在这里插入图片描述

  • volatile, CAS等

  • AQS

  • 为什么这块数据既用mysql,也用elasticSearch存储,能不能只用es?

  • kafka怎么保证消息的可靠性

  • kafka怎么加快消费速度

Round 2
算法、数据结构方面的问题。比如topK: 怎样找到一个文档时出现频率前k(k比较小,顶多占到1/4)的词?
后面我想到,当内存能放下整个文档时2,有两种方法,其中基于快速排序的方法二是可以实现时间复杂度O(N)的:
首先不管用哪个方法,都需要先统计文档中的词的频率,并得到一个Entry的数组,这部分时间为O(N)。然后:
方法一:用小根堆,这部分时间复杂度为O(Nlogk)
方法二:基于快速排序,这部分时间复杂度为O(N)

如果内存不能放下整个文档,那就基于方法一进行扩展。

Round 3

扫描二维码关注公众号,回复: 15070869 查看本文章
  • 介绍虚拟辅导员项目,聊了下分布式锁
  • Http长连接
  • 用过linux下哪些抓包工具
  • 知道MTU(最大传输单元)吗
  • 通过netstat命令看到很多tcp连接处在TIME_WAIT状态, 这个是什么意思
  • 有锁的父进程fork出一个子进程,此二进程的这个锁互斥吗?
  • 进程、线程相关问题
  • k8s网络:不同节点之间的pod如何通信?命名空间? 知道IPTables吗?
  • 网络方面,了解隧道技术吗?
  • synchronized锁升级
  • 怎样解决Maven build时的包冲突问题

  1. HashMap为什么线程不安全 ↩︎

  2. leetcodeCn之 347. 前 K 个高频元素的题解 ↩︎

猜你喜欢

转载自blog.csdn.net/qq_23204557/article/details/128974318
今日推荐