他叫Mr.J

他真的叫Mr.J

直通BAT算法面试——链表

题一:链表分化 /** * 题干: * 对于一个链表,我们需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面,同时保证两类结点内部的位置关系不变。 * 给定一个链表的头结点head,同时给定阈值val,请返回一个链表,使小于等于它的结点在前,大于等于它的...

2017-03-29 15:58:33

阅读数:279

评论数:0

直通BAT面试算法总结——栈和队列

题一:栈的逆序 /** * 题干: * 实现一个栈的逆序,但是只能用递归函数和这个栈本身的pop操作来实现,而不能自己申请另外的数据结构。 * 给定一个整数数组A即为给定的栈,同时给定它的大小n,请返回逆序后的栈。 * 测试样例: * [4,3,2,1],4 * 返回:[1,2,3,4...

2017-03-24 21:29:12

阅读数:447

评论数:0

直通BAT算法面试题总结

题1:/** * 题干:对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。 * 给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树 * * 解析:其实就是将树序列化为字符串来解决就行。然后在判断一下是...

2017-03-24 16:41:59

阅读数:835

评论数:0

jvm面试题-堆内存设置

原理: JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, ...

2017-03-22 19:38:14

阅读数:204

评论数:0

Java并发编程的艺术-Java中的锁

Java中可以通过实现Lock接口的方式来创建自定义的同步部件,同步的部件核心其实就是同步队列(AbstractQueuedSynchronizer一般是通过一个内部类来实现它,然后实现他之中的几个方法);可以这样理解锁与同步队列的关系:锁时面对使用者的,定义了使用者与锁之间的交互接口;而同步队列...

2017-03-22 19:37:02

阅读数:296

评论数:0

并发编程-Java内存模型

JMM:Java内存模型 指令重排序分为: 编译器重排序-》指令并行重排序-》内存系统重排序(后两者都属于处理器重排序)JMM通过禁止特定类型的重排序实现一致的内存可见性。重排序其实就是为了实现对程序的优化对指令的执行顺序进行重新排序。重排序时应该遵守as-if-serial语义和ha...

2017-03-15 11:08:38

阅读数:184

评论数:0

在浏览器中输入www.baidu.com后执行的全部过程

这个问题经常可以看到,今天我好好总结了下,是从网络模型的角度来分析问题的,主要涉及应用层:DNS,HTTP,传输层:TCP,网络层:IP和路由选择协议:RIP,OSPF(内部网关协议),BGP(外部网关协议)和数据链路层:ARP。下面来具体分析:1.应用层:客户端浏览器通过DNS解析到www.ba...

2017-03-13 18:06:37

阅读数:745

评论数:0

java集合类设计中的几个问题

(一)是否是线程安全的 java的集合框架中有很多类都是非线程安全的,但是有设计了对应的功能相似的线程安全的类来解决多线程的问题。当然多线程就意味着效率低,具体的实现一般都是用了同步方法(sychronized)比如HashMap和HashTable(CurrentHashMap也是线程安全的而...

2017-03-09 19:21:52

阅读数:203

评论数:0

HashMap底层实现原理

在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(...

2017-03-09 18:41:41

阅读数:11672

评论数:1

java集合类概略

接口:CollectionCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,J...

2017-03-09 15:13:49

阅读数:106

评论数:0

String StringBuffer StringBuilder区别

String在java虚拟机中被理解为不变的常量,如果他所指的值改变那么他的内存空间就要被回收, Eg:String a=”aa”; a=a+”b”;或者a=”bb”; 在这里a的值被改变了,所以就要先回收掉a以前的内存,在为其新值分配新内存; 如果对于两个String常量,他们具有相同...

2017-03-09 10:42:41

阅读数:97

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭