自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

他叫Mr.J

他真的叫Mr.J

  • 博客(11)
  • 问答 (4)
  • 收藏
  • 关注

原创 直通BAT算法面试——链表

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

2017-03-29 15:58:33 518

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

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

2017-03-24 21:29:12 695

原创 直通BAT算法面试题总结

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

2017-03-24 16:41:59 2490

原创 jvm面试题-堆内存设置

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

2017-03-22 19:38:14 362

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

Java中可以通过实现Lock接口的方式来创建自定义的同步部件,同步的部件核心其实就是同步队列(AbstractQueuedSynchronizer一般是通过一个内部类来实现它,然后实现他之中的几个方法);可以这样理解锁与同步队列的关系:锁时面对使用者的,定义了使用者与锁之间的交互接口;而同步队列AQS是面向锁的,它简化了锁的实现方式,对用户来说,AQS屏蔽了同步管理,线程的排队,等待与唤醒等底层操

2017-03-22 19:37:02 471

原创 并发编程-Java内存模型

JMM:Java内存模型 指令重排序分为: 编译器重排序-》指令并行重排序-》内存系统重排序(后两者都属于处理器重排序)JMM通过禁止特定类型的重排序实现一致的内存可见性。重排序其实就是为了实现对程序的优化对指令的执行顺序进行重新排序。重排序时应该遵守as-if-serial语义和happens-before规则。对于多处理器的主机,每一个处理器多会有一个读写缓冲区,而且每一个处理器的缓

2017-03-15 11:08:38 347

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

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

2017-03-13 18:06:37 1176

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

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

2017-03-09 19:21:52 429

原创 HashMap底层实现原理

在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。简单说下HashMap的实现原理:首先有一个每个元素

2017-03-09 18:41:41 36363 4

原创 java集合类概略

接口:CollectionCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。所有实现Collec

2017-03-09 15:13:49 251

原创 String StringBuffer StringBuilder区别

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

2017-03-09 10:42:41 206

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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