Day492&493.尚硅谷之高频重点面试题④ -面经

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day492&493.尚硅谷之高频重点面试题④ -面经相关的知识,希望对你有一定的参考价值。

尚硅谷之高频重点面试题④

一、生产环境服务器变慢了,怎么诊断思路和性能评估?

  • 指令

    • top—整机系统性能

      3个值相加除以3*100%,如果大于60%表示系统压力大

    • vmstat—cpu性能
    vmstat -n 2 3
    #每2秒采样一次,共计3次
    

  • mpstat—cpu性能
mpstat -P ALL 2
#每两秒采样一次所有CPU信息

  • pidstat

  • free—内存性能
free -m


  • df—硬盘性能
df -h

  • iostat-磁盘io
iostat -xdk 2 3


二、生产环境CPU突然变高,你的分析思路与定位是什么?

  • 先用top,找出cpu占用最高的,记录pid

  • 定位到哪一行java代码,或线程

    • ps -mp 进程pid -o THREAD,tid,time
      

  • 将得到的10进制pid转换为16进制小写pid

  • 通过jstack查看具体代码

    • jstack pid十进制 |grep tid(pid十六进制小写英文) -A60
      


三、你用过Github吗?谈一谈

  • 常用词

    • star
    • clone
    • fork
    • watch
    • follow
  • 指定含有查找

    xxx关键词 in:name或descripton或readme
    

组合使用:
achang in:name,descripton,readme
  • 指定数量查找
xxx关键词 stars:>=5000
         forks:>500
         forks:100..200 starts:80..100 
  • 查找精品

用来学习,书籍

awesome 关键词
  • 给别人指出高亮代码显示

https://github.com/qq995931576/netty/blob/master/netty-demo/src/main/java/com/achang/netty/codec/NettyClientHandler.java#L14-L39

  • 项目内搜索

键盘中小写英文字母t

  • 搜索某地区内的大佬


四、intern

  • 面试题

在加载启动的时候java就会直接加载到常量池中,str2.intern()返回的是一开始加载的,而str2是执行新建立的

  • 知识点

  • 原题


五、两数求和

  • 面试题

  • 暴力解法

  • 哈希解法

七、LockSupport

1、是什么?

  • 是JUC包中的一个类,名字叫LockSupport。线程等待唤醒机制(wait/notify)的改良加强版


2、能干什么

  • park():阻塞线程
  • unpark():唤醒线程


3、3种唤醒/阻塞线程的方式

  • wait/notify方式
    • 必须要在synchronized代码块中使用不然会报“IllegalMonitorStateException
    • 先wait后notify,才会被唤醒,不然就无法被唤醒
  • await/signal方式
    • 必须在lock和unlock中间才能执行,不然会报“IllegalMonitorStateException
    • 先await后signal,才会被唤醒,不然也依然无法被唤醒

4、API调用

  • pack()

  • unpack()


5、演示代码


6、作用

避免了上面两种方式不能满足的要求

  • 不要求在lock和unlock中或,synchronized块
  • pack和unpack的顺序没有要求,当先执行unpack,那么后面执行的pack将会直接无效

7、重点说明


8、面试题


八、AQS

1、是什么?

  • 字面意思

    • AbstractQueuedSynchronizer抽象的队列控制同步器
    • 通过队列,对抢不到锁的线程进行管理
  • 技术解释


  • 简单理解

    通过一个资源state,来表示锁的状态,0是自由状态,大于0代表被占用。抢不到资源的线程,就放在FIFO队列中进行管理,争取下次再进行争取获取资源

    AQS=资源状态State变量+CLH虚拟双向队列(FIFO)-------->AQS=变量+队列


2、为什么AQS是JUC内存的基石呢?

  • 线程锁、流程控制的底层实现基础

    • ReentrantLock

    • CountDownLatch

    • ReentrantReadWriteLock

    • Semaphore

  • 与AQS有关


3、为什么需要AQS

  • 有阻塞就会有排队,有排队就会需要以某种形式的列队进行管理


以上是关于Day492&493.尚硅谷之高频重点面试题④ -面经的主要内容,如果未能解决你的问题,请参考以下文章

Day495&496.尚硅谷之高频重点面试题⑤ -面经

Day489&490&491.尚硅谷之高频重点面试题③ -面经

Day489&490&491.尚硅谷之高频重点面试题③ -面经

Day481&482&483&484&485.尚硅谷之高频重点面试题① -面经

Day486&487&488.尚硅谷之高频重点面试题② -面经

Day489.尚硅谷之高频重点面试题③ -面经