面试真题

进程与线程的区别和联系

从资源占用、切换效率、通信方式的方面回答

简单介绍下线程的切换过程

线程切换上下文的代价,切换会保存寄存器、栈等线程相关现场,需要由用户态切换到内核态,查看切换状态的命令

上下文切换的查看方法

sar -w ,这个只是能看出主机上总的上下文件切换的情况

# sar -w 1
proc/s
     Total number of tasks created per second.
cswch/s
     Total number of context switches per second.

同样,vmstat也可以查看总的上下文切换情况,不过vmstart输出的结果更多,便比通过对比发现问题:

# vmstat 3
procs -----------memory----------  ---swap-- -----io----  -system-- ----cpu----
 r  b   swpd   free   buff  cache    si   so    bi    bo   in    cs us sy id wa
 2  0   7292 249472  82340 2291972    0    0     0     0    0     0  7 13 79  0
 0  0   7292 251808  82344 2291968    0    0     0   184   24 20090  1  1 99  0
 0  0   7292 251876  82344 2291968    0    0     0    83   17 20157  1  0 99  0
 0  0   7292 251876  82344 2291968    0    0     0    73   12 20116  1  0 99  0

查看每个进程或线程的上下文件使用情况,可以使用pidstat命令或者通过查看proc 。

# pidstat -w   每个进程的context switching情况
# pidstat -wt  细分到每个threads
查看proc下的文件方法如下:
# pid=307
# grep ctxt /proc/$pid/status
voluntary_ctxt_switches:        41    #自愿的上下文切换
nonvoluntary_ctxt_switches:     16    #非自愿的上下文切换

cswch/s: 每秒任务主动(自愿的)切换上下文的次数,当某一任务处于阻塞等待时,将主动让出自己的CPU资源。

nvcswch/s: 每秒任务被动(不自愿的)切换上下文的次数,CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。

参考文章——进程上下文频繁切换导致load average过高

常用Linux命令,主要用来解决什么问题

为什么TCP建连需要3次握手,而断连需要4次

为什么TCP关闭连接需要TIME_WAIT状态,为什么要等待2MSL

一次完整的Http请求的过程

大致包括DNS解析、TCP建连、Http请求、Http响应等

Http2和Http的区别有哪些

项目中使用过的设计模式,主要用来解决什么问题

Object中的hashCode()和equals()的作用分别是什么

final、finally、finalize的却别和使用场景

简单描述下Java的异常机制

线上使用的JDK版本,为什么使用这个版本(有什么特点)

持续更新:更新时间:2019年4月21日03:17:34

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值