面试总结(随笔)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_26118603/article/details/80454183

2018-05-25,某医疗互联网

1.自我介绍。
2.介绍简历中的项目

扯到一个发布动态的问题,然后直接问微博这样的多线程情况下怎么整,好吧,没考虑到这样的情况。

3.JVM内存模型

java堆:Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。

方法区:方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
程序计数器:程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。
java虚拟机栈:与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
本地方法栈:本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native方法服务。

4.ES2.X支持中文搜索吗,底层数据结构是什么?

(没回答出来)es2.x支持中文搜索,底层数据结构是倒序索引,有兴趣的同学们可以去了解下,

5.HashMap原理,HashMap在多线程下的机制是什么?

HashMap原理,多线程下的机制?有用到这个吗?多线程下不是不用HashMap吗,面试官让我回去百度。。。

6.mysql行锁表锁介绍(忘了)

表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低,使用场景:查询为主,少量索引
行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高,场景:有大量按索引条件并发更新少量不同数据,伴随并发查询

7.ConcurrentHashMap实现原理

CAS无锁算法,分段锁机制

8.CAS算法介绍以及全称

CAS算法(Compare And Swap):CAS操作(compare and swap)CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则返回V。因为线程不必再等待锁定,只要执行CAS操作就可以,会在预期中完成,所以叫无锁算法。(嘴贱扯了ABA)
ABA:如果另一个线程修改V值假设原来是A,先修改成B,再修改回成A。当前线程的CAS操作无法分辨当前V值是否发生过变化。解决办法:自动记录仪记录下线程操作。面试官:这是怎么记录的,我:奔溃。。。

9.LinkList实现了哪些接口,底层数据结构是什么

List、AbstractList、Iterable…..接口,底层使用双向环形链表数据结构,问:双向链表的实现方式,我:猝

面试总体感觉不好,每些都懂点儿,但是往深了问,死翘翘,所以去互联网公司面试,这些基础一定要打牢,架构这块可能面试官没这么注重,(要是注重起来那就是底层实现了)。主要就是基础这块:集合框架、锁、多线程

猜你喜欢

转载自blog.csdn.net/qq_26118603/article/details/80454183