静儿最近在总结一些面试题,那是因为做什么事情都要认真。面试也一样,静儿作为新美大金融部门的面试官,负责任的告诉大家,下面的问题回答不上来,面试是过不了的。不过以下绝不是原题,你会发现自己实力不过硬,最终肯定是被问出来的。

  1>如何定位线上服务OOM问题 

2>JVM的GC ROOTS存在于那些地方

3>mysql innodb怎样做查询优化

  4>java cas的概念

  5>hashmap怎样减少键冲突

  下面静儿就以自己面试的标准简单回答一下这些题怎样回答算过关。

  1>如何定位线上服务OOM问题

  因为面试主要是看思路,答案还是其次,那么要是我回答这个问题。我可能会把整个思路都说出来:Java服务OOM,比较常见的原因是

  ⭐️ 有可能是内存分配确实过小,而正常业务使用了大量内存

    比如jmap -heap命令可以查看新生代老年代的堆内存大小及使用情况,看看是否内存本身分配过小。

  ⭐️ 某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽

    比如jmap -histo:live 对象显示存活对象的信息,并按照所占内存大小的排序。因为包含了实例数、所占内存大小、类名,所以很直观。

  ⭐️ 某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接  

    可以用pstree、netstat查看进程创建线程数,网络连接数,如果资源耗尽,也会出现OOM。也可以查看/proc/${PID}/fd  和/proc/${PID}/task,查看句柄详情和线程数。

  

  2>JVM的GC ROOTS存在于那些地方

  问到这个问题应该是前面一步步引导过来的,如果没有,在直接回答这个问题之前,最好简要描述一下JVM的内存结构和根搜索算法(GC ROOTS Tracing)做可达性分析。

  GC Roots的对象包括如下几种(静儿来新美大的时候就被我们架构师问过这个问题):

  ⭐️  虚拟机栈(栈桢中的本地变量表)中的引用的对象

  ⭐️  方法区中的类静态属性引用的对象

  ⭐️  方法区中的常量引用的对象

  ⭐️  本地方法栈中JNI的引用的对象

  GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域作为GC ROOTS。被GC ROOTS引用的对象不会被垃圾回收。

  

  3>mysql innodb怎样做查询优化

  这个问题的答案就比较多了,各人的心得都是不一样的。主要考察在工作实践中的总结和思考能力。最好面试者能在总结的通用答案之后加上实际项目中的使用例子。

  ⭐️  innodb_buffer_pool_size 此参数的作用是缓冲数据和索引,对性能可以产生线性的提高,最大可设置为内存大小的百分之七八十的样子

  ⭐️  打开慢查询日志,增加参数:log-queries-not-using-indexes,方便把系统中没有走索引的sql语句全抓出来优化

  ⭐️  通过explain做查询分析,看看有没有用索引,访问的行数rows

  ⭐️  关闭skip_name_resolve,减少逆向DNS解析的消耗

  另外还有一些实际写代码过程中深入骨髓的,比如数据动静分离提高query_cache的命中率啦,减少字段冗余,减少查询次数啦,复杂查询分解啦,分页优化啦啥的。

  很多人说面试题和实际开发联系不大,觉得没啥用。其实很多活培训两个月都是能干的。人和人之间的差距确实没有明显到你能干我不能干的程度。但是之前做过一个项目,我和别人一起干,干完之后我要修改很多其他人的各种慢查询问题啦,性能问题啦之类。我看了他们写的sql,我发现这些sql我会理所当然不那么用的。因为我在人人的时候就很注意这些方面,我认为是理所当然的,知道这样影响性能。

  还有就是面试评价好的人实际写代码的时候确实出的问题要少,因为他们考虑更全面。很多人不是有意要出bug的,但是确实是不知道啊,不知道要考虑情况A,情况B,不知道JVM底层的实现,所以有可能会产生的意想不到的结果。出了问题了也不知道往哪个方向去想。

  4>java cas的概念

  cas:compare and swap,比较并交换

  java的concurrent包中借助cas实现了区别于synchronouse同步锁的一种乐观锁。

  CAS通过调用JNI的代码来实现

  5>hashmap怎样减少键冲突

  

跑题时间:

  这几年万圣节都会买南瓜自己做南瓜灯。我给小鲜肉在美国买的西餐刀非常安全,我都是把南瓜洗干净,旁边放一个干净铁盆,让小鲜肉自己雕刻南瓜灯,我睡觉去。因为我承诺了要用做南瓜灯剩下的边角料给他做南瓜饼,所以睡觉起来会看到桌子上很干净。记得有一年我觉得浪费,把南瓜顶上的盖也做着吃了,小鲜肉很生气,我们只好第二天一起去超时重买了一个小贝贝南瓜重做了一个南瓜灯。

  南瓜饼可以直接将南瓜煮熟放糖放面粉做成饼油炸。用牛奶来和面味道更好。我总习惯捏出来各种动物形状做一盘外焦里嫩的动物大餐。但是如果是一整个南瓜,那就蒸成9分熟之后和面粉一起用杵捣,捣的时间越长越有弹性。这个工作当然是交给小鲜肉来做的。但是这样就不好捏成形状了,只用勺子弄成球下锅。油锅开始时是小火,南瓜饼熟的差不多了,再开大点火,外面酥脆,里面松软。

  只可惜现在都是很忙,周末也只是办公间隙里去给小鲜肉做点小点心。记得原来总是特别清闲,找工作也总是不给自己加压,说自己不做管理。过着管好自己就可以的生活。有次带着小鲜肉去华科看牡丹,看到一个姑娘悠闲的躺在长椅上晒太阳。这可不就是原来的自己。悠然的过了那么多年,告诉自己“有花堪折直须折”,早就做好了准备接受现在的一切,而真的到来的时候,除了庆幸自己想要做的都试过了,还是多少有些伤感。

  男神在我手机上看我的BOSS直聘。我说:“人家老公查媳妇手机都是看看媳妇到底跟谁聊了天,都聊了啥,你看你”。男神漫不经心的说:“对啊,关心啊,所以把你手机没收了。”然后接着看BOSS直聘。

  别看周末是这样的,平时我忙的都不回家,也就是周末才回家一趟。每天男神都给我请安,问我是否活着。他最近改了头像,头像是东软的一条小道,因为原来我俩在东软的时候每天早晨我俩都刚好能在那条小道上打个照面。从那以来,两个人就是彼此牵挂、彼此信任、一起努力的往前走。奋斗是很辛苦,如果一个人的话是很难坚持。两个人相互鼓励的往前走,想要放弃的时候,总是不忍心让对方失望,于是就实现了一个又一个的目标。

  男神最近在一路开挂的面试,面试过程中收获了一打年轻漂亮的猎头和HR。因为他换工作的理由是:“我想找个离媳妇近的工作,每天接送媳妇上下班。”我相信我家男神的自制力,看到男神的offer薪资秒杀我,我赶紧发个短信问他:“以后你这么牛逼了,还能每周给我洗衣服吗?”男神毫不犹豫的回了个:“能”。结果周末回家告诉我我上周的衣服还有几件没洗的,让我有空自己洗吧,我突然觉得天儿咋这么冷呢。还幻想着劝我家男神来我们新美大,像以前我在人人的时候一样,每周末来给我收拾工位呢。不来也好,旁边站着一个女神收割机,我压力也是有的。

  当一个人站在自己面前,其实自己心里是很清楚的。谁是合适的,谁是喜欢的。而到底谁是对的人取决于自己的人生规划。规划着想要幸福就选合适的,天生为才艺而生的人会选喜欢的。如果来生还是今世的重复,纵然多情要比无情苦。痛苦才是才艺的源泉,经历过才会感同身受。原来看过一个从零维空间到十维空间的,突然觉得之前遇见过的人都是其中一个维度的选择,只是自己不喜欢那个选择,于是在这个空间里做了调整。

  一个人做了一场梦,醒来感叹梦而已。实际上做梦的时候,体内有数以万计的细胞终其一生只为演绎这场梦境。谁又能肯定自己不是别人梦境中的一个细胞呢。所以呢,别把自己太当回事,演绎好自己,好梦!

入我新美大的Java后台开发面试题总结的更多相关文章

  1. J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP

    J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言   搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理.    ...

  2. 各大公司java后端开发面试题

    各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...

  3. 各大公司Java后端开发面试题总结

    ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...

  4. 面试题:各大公司Java后端开发面试题总结 已看1 背1 有用 链接有必要看看

    ThreadLocal(线程变量副本)       --整理 Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个 ...

  5. (最新)各大公司Java后端开发面试题总结

    ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一 ...

  6. Java后台开发面试题总结

    1>如何定位线上服务OOM问题 2>JVM的GC ROOTS存在于那些地方 3>mysql innodb怎样做查询优化 4>java cas的概念 Java服务OOM,比较常见 ...

  7. [转]linux C/C++服务器后台开发面试题总结

    linux C/C++服务器后台开发面试题总结  https://www.cnblogs.com/nancymake/p/6516933.html 一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别 ...

  8. 后台开发面试题(.net与java)

    最近面试了几家公司,发现大部分公司面试题有相似的地方.现在此记录下我还记得的一些题: JAVA部分: 1.Java Map 按Key排序和按Value排序: 参考链接:Java Map 按Key排序和 ...

  9. linux C/C++服务器后台开发面试题总结

    一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别? 主要浅谈下C/C++和PHP语言的区别: 1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网 ...

随机推荐

  1. iOS开发-AFNetworking参数和多文件同时上传【多文件上传】

    1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...

  2. 百度富文本编辑器Ueditor使用

    首先我们登上ueditor下载,可以看到多种版本. UBuilder:可以自己选择需要的工具. 我用的开发版,Java的jsp版本,在这里是全部工具,但是工具在配置文件中也是可以自己选择的. 下载下来 ...

  3. oracle中number类型最简单明了解释

    NUMBER (p,s) p和s范围: p 1-38 s -84-127 number(p,s),s大于0,表示有效位最大为p,小数位最多为s,小数点右边s位置开始四舍五入,若s>p,小数点右侧 ...

  4. WPF控件自适应屏幕

    如果说界面设计,那么自适应问题一定无法避免,今天就来分享一下,wpf如何实现自适应,先看一下效果:(文末添加源代码下载)     基本思路就是用 Grid 的网格,进行宽度的自动填充适应,  不过对于 ...

  5. 用es6的class关键字定义一个类

    es6新增class关键字使用方法详解. 通过class关键字,可以定义类.基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法 ...

  6. JAVAWEB复习资料-01

    CSS中@import和link两种插入样式表方式有什么不同? 1.link属于HTML标签,除了引入css文件之外还能定义RSS等,而@import只能用于加载CSS. 2.link在引用CSS时, ...

  7. C++格式化硬盘程序

    #include using namespace std; //声明命名空间 void main() {  char format[12]="format", name[10], ...

  8. windows 本地构建hadoop-spark运行环境(hadoop-2.6, spark2.0)

    下载hadoop http://hadoop.apache.org/releases.html --> http://mirrors.tuna.tsinghua.edu.cn/apache/ha ...

  9. (转)Python-正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  10. go基础编程 day-1

    Go语言的特性 开启了学习新的语言路程,记录每天学习的笔记,与大家一起分享. ①.自动垃圾回收 ②.更丰富的内置类型 ③.函数多返回值 ④.错误处理 ⑤.匿名函数和闭包 ⑥.类型和接口 ⑦.并发编程 ...