实习面经摘录(六)
来自网络供个人学习侵删 某滴先完成再完美1.JVM内存结构也被定义为 运行时数据区JVM内存结构分为两大类线程私有区域/线程共享区域3.内存泄漏怎么处理排查常见内存泄漏场景静态集合类不断add却从不remove。未关闭的资源数据库连接、IO流、Socket连接未关闭虽然现代框架大多自动管理但手动编码时易犯。监听器和回调注册了监听器却忘记注销。ThreadLocal 使用不当线程池复用线程时ThreadLocal变量未remove导致大对象一直被线程引用。内部类持有外部类引用非静态内部类隐式持有外部类实例若内部类生命周期长外部类也无法回收。4.死锁条件怎么排查在写代码时候怎么避免死锁互斥条件持有并等待条件不可剥夺条件环路等待条件jstack是 JDK 自带的强大工具能直接检测出死锁。Linux:top -H -p pid查看线程 CPU 占用。死锁的线程通常 CPU 为 0%因为在 wait 状态但状态是BLOCKED。使用资源有序分配法来破环环路等待条件。5.mysql中sql语句执行流程连接查询缓存解析sql执行sql(预处理优化执行)6.SELECT* 和SELECT 字段有什么区别后者若查询字段刚好在索引上可实现覆盖索引扫描无需回表速度极快。7.SELECT 字段一定可以避免死锁吗1.经典的“交叉更新”死锁最常见2.锁升级死锁 (S 锁 - X 锁)A 等 B 释放 S 锁以便升级。B 等 A 释放 S 锁以便升级。死锁形成。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411619.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!