过渡内容

B+树索引和哈希索引都有什么优缺点:http://www.javashuo.com/article/p-ewgykcmq-cb.html   http://www.javashuo.com/article/p-bwixyvrq-gc.htmlhtml

B树和B+树的区别:http://www.javashuo.com/article/p-dnkgqbpl-ev.html    https://blog.csdn.net/login_sonata/article/details/75268075java

 

聚簇索引和非聚簇索引的区别   https://wangxinchun.iteye.com/blog/2373650

HashMap里面实现一个静态内部类Entry,其重要的属性有 key , value, next,从属性key,value咱们就能很明显的看出来Entry就是HashMap键值对实现的一个基础bean,咱们上面说到HashMap的基础就是一个线性数组。把HashMap的put源码,get源码理一遍linux

Exception与error的差异   Exception的分类   NullpointerException属于什么.运行时异常与通常异常的区别  .try-catch-finally中return  https://www.jianshu.com/p/e8bbee3c1c4a   https://blog.csdn.net/huhui_cs/article/details/38817791  https://blog.csdn.net/u012112647/article/details/51798897   https://blog.csdn.net/ns_code/article/details/17485221web

IO流分类:IO流中用到了不少设计模式:https://my.oschina.net/gao0516/blog/136103面试

问了一个数据量过大,会致使JVM堆栈过深,怎么办:http://www.javashuo.com/article/p-stucavxq-ee.htmlredis


Java的虚拟机的面试内容主要包括三部分:GC、类加载机制,以及内存。

  一个GC部分简单的连环炮。
面试官能够先问你何时一个对象会被GC?
  接着继续问你为何要在这种时候对象才会被GC?
  接着继续问你GC策略都有哪些分类?
  你若是说出来了,继续问你这些策略分别都有什么优劣势?都适用于什么场景?
  你继续说出来了之后,给你举个实际的场景,让你选择一个GC策略?
  你若是选出来了,继续问你,为何要选择这个策略?

下面是关于类加载机制的简单连环炮。
首先确定是先问你Java的类加载器都有哪些?
  回答了这些之后,可能会问你每一个类加载器都加载哪些类?
  说完之后,可能会问你这些类加载之间的父子关系是怎样的?
  你在回答的时候可能会提到双亲委派模型,那么能够继续问你什么是双亲委派模型?
  你解释完了之后,可能会继续问你,为何Java的类加载器要使用双亲委派模型?
  你回答完之后,可能会继续问你如何自定义本身的类加载器,本身的类加载器和Java自带的类加载器关系如何处理?

再来一个关于内存的连环炮。
首先确定就是问你JVM内存分为哪几部分,这些部分分别都存储哪些数据?
  而后继续问你一个对象从建立到销毁都是怎么在这些部分里存活和转移的?
  接着可能会问你,内存的哪些部分会参与GC的回收?
  完事之后,可能还会问你Java的内存模型是怎么设计的?
  你回答了之后,还会继续问你为何要这么设计?
  问完之后,还可能会让你结合内存模型的设计谈谈volatile关键字的做用?
  你在谈的时候,确定会提到可见性,那么接着可见性这三个字,还能够继续问你并发的内容。

为何要设置两个Survivor区
设置两个Survivor区最大的好处就是解决了碎片化,下面咱们来分析一下。数据库

为何一个Survivor区不行?第一部分中,咱们知道了必须设置Survivor区。假设如今只有一个survivor区,咱们来模拟一下流程:
刚刚新建的对象在Eden中,一旦Eden满了,触发一次Minor GC,Eden中的存活对象就会被移动到Survivor区。这样继续循环下去,下一次Eden满了的时候,问题来了,此时进行Minor GC,Eden和Survivor各有一些存活对象,若是此时把Eden区的存活对象硬放到Survivor区,很明显这两部分对象所占有的内存是不连续的,也就致使了内存碎片化。设计模式

 
 
jstack简单使用,定位死循环、线程阻塞、死锁等问题:http://www.javashuo.com/article/p-ofxdupcw-eo.html
 CMS收集器和G1收集器优缺点  http://www.javashuo.com/article/p-whgycjfl-et.html
 
hashmap 计算下标值的,时间复杂度是多少,最坏的时间复杂度是多少  在扩容的时候时间复杂度是O(n)的,你有什么方式去优化这个时间复杂度吗
CMS从新标记时标记什么,为何这么标记,标记待回收垃圾和标记保留对象的区别是什么,哪一个更好一些
concurrenthashmap怎么实现的,get数据的时候须要加锁吗。:https://juejin.im/entry/5b98b89bf265da0abd35034c
可重入锁的原理
设计模式几个原则:https://www.jianshu.com/p/6ef653f2892a
 

hashset实现的原理:https://wiki.jikexueyuan.com/project/java-collection/hashset.htmlapi

读写锁 https://blog.csdn.net/Li_Ning_/article/details/52294343数组

看端口 检测在线线程

https://michaelyang1988-hotmail-com.iteye.com/blog/1874671

 给你一个User,包含id,name,parentId。而后给你一个List<User>,要求将它转换成一棵树的结构。只有一个跟节点,parentId=-1  https://blog.csdn.net/xinzi11243094/article/details/80890222
进程通讯:
编写两个线程,一个线程打印1~25,另外一个线程打印字母A~Z,打印顺序为12A34B56C……5152Z,要求使用线程间的通讯。  https://blog.csdn.net/u011514810/article/details/77131296
 
登陆注册模块:
Redis存储验证码,存储登陆凭证用户信息。
 
服务器接收到app发送的用户名和密码后,验证用户名和密码是否正确。若是验证正确,生成一个随机的不重复的token字符串,在redis中维护一个映视表,创建token字符串和用户信息的对应关系表,服务器把token字符串返回给app,app把这个token字符串保存起来,做为登陆的验证, 当须要验证用户身份的操做时,必需要把token字符串传给服务器验证身份,当服务器接收到这个api请求,知道要验证用户身份的,因而,就把参数中token的值"daf32da456hfdh"取出来,在(1)中创建的token字符串和用户信息的对应关系表查找,若是发现没这个token值的,则返回验证失败的信息。若是发现有这个token值,则获取这个用户的信息,进行相关的更新操做。 当用户退出登陆时,须要经过调用api,让服务器把这个用户对于的token字符串删除.
 
 
数据库索引:

索引的分类

  • 汇集索引
  • 非汇集索引
  • 哈希索引
  • B+-树索引(二分查找)
 

数据库分库分表,垂直切分和水平切分 https://www.i3geek.com/archives/1108

 

9. 一张表有不少字段, 热门的就那几个字段, 如何设计, 若是热门和不热门字段都须要, 如何设计

 

10. 索引是干什么的, 商城订单有一个state列,只有少数几种状态,适合当索引吗

 

java线程安全;http://www.javashuo.com/article/p-uygzhmju-a.html

 

 Redis keys   

KEYS pattern

查找全部符合给定模式 pattern 的 key 。

 keys的模糊匹配功能很方便也很强大,可是开发中使用keys的模糊匹配却发现redis的CPU使用率极高。那怎么解决这种相似的keys模糊匹配问题呢?其中常见的方法就是设置一个set,将须要使用的keys存储在set中。
利用Redis在缓存中实时统计文章阅读热度的topk:利用zset,https://blog.csdn.net/wangh92/article/details/80052607   https://my.oschina.net/jockchou/blog/478780
 
 
 

内存碎片:http://www.javashuo.com/article/p-usbpqcuo-mw.html    https://blog.csdn.net/bit_x/article/details/5655278

【同一进程间的线程共享的资源有】

a. 堆  因为堆是在进程空间中开辟出来的,因此它是理所固然地被共享的;所以new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)

b. 全局变量 它是与具体某一函数无关的,因此也与特定线程无关;所以也是共享的

c. 静态变量 虽然对于局部变量来讲,它在代码中是“放”在某一函数中的,可是其存放位置和全局变量同样,存于堆中开辟的.bss和.data段,是共享的

d. 文件等公用资源  这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。

【独享的资源有】

a. 栈 栈是独享的

b. 寄存器  这个可能会误解,由于电脑的寄存器是物理的,每一个线程去取值难道不同吗?其实线程里存放的是副本,包括程序计数器PC

 关系型与非关系型数据库的优缺点 http://www.javashuo.com/article/p-wfaklldr-kc.html

 

给定一个int数组A,数组中元素互不重复,给定一个数x,求全部求和能获得x的数字组合,组合中的元素来自A,可重复使用。

做者:菜鸟也须要offer 连接:https://www.nowcoder.com/discuss/206411
来源:牛客网 public ArrayList<ArrayList<Integer> res = new ArrayList<>(); public  ArrayList<ArrayList<Integer>> sum(int[] A,int x) { Arrays.sort(A); if(A==null||A.lenght==0) return res; ArrayList<Integer> list = new ArrayList<>(); bk(A,X,0,list); return res; } public void bk(int[] A,int X,int k, ArrayList<Integer> list) { if(X=0) { res.add(list); return; } if(X<0) { return; } for(int i=k;i<A.lenght;i++) { list.add(A[i]); bk(A,X-A[i],i,list); list.remove(list.size()-1); } }

 

最少交换次数来组合全部的 1:https://blog.csdn.net/hy971216/article/details/99294989

如何统计controller层全部方法的调用时间:Spring AOP 实现监控方法执行的时间(统计service中方法执行的时间)

linux查找文件命令:find

 

内存屏障,happen-before  https://blog.csdn.net/kuangzhanshatian/article/details/81738599

wait方法底层原理:https://www.jianshu.com/p/f4454164c017

 

内部类能够引用他包含类的成员吗:一个内部类对象能够访问建立它的外部类对象的内容,内部类若是不是static的,那么它能够访问建立它的外部类对象的全部属性内部类若是是sattic的,即为nested class,那么它只能够访问建立它的外部类对象的全部static属性通常普通类只有public或package的访问修饰,而内部类能够实现static,protected,private等访问修饰。当从外部类继承的时候,内部类是不会被覆盖的,它们是彻底独立的实体,每一个都在本身的命名空间内,若是从内部类中明确地继承,就能够覆盖原来内部类的方法。

 

java多线程龟兔赛跑:https://blog.csdn.net/renl123470/article/details/52344422

 动态代理,但是在印象中代理模式一直都是控制访问什么的,怎么又动态增长行为了,动态增长行为不是装饰器模式吗?实际上,在装饰器模式和代理模式之间仍是有不少差异的。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)能够对它的客户隐藏一个对象的具体信息。所以,当使用代理模式的时候,咱们经常在一个代理类中建立一个对象的实例。而且,当咱们使用装饰器模 式的时候,咱们一般的作法是将原始对象做为一个参数传给装饰者的构造器。

相关文章
相关标签/搜索