java面试备忘录

为了鸭脖,为了妹子,为了理想,努力吧骚年;

(个人为面试准备的备忘录,慢慢学习,慢慢完善)

https://github.com/hunter1314?tab=repositories

一、java基础

1.HashMap和Hashtable:
  [1]继承不一样,table继承老集合包,Map继承抽象类AbstractMap,并实现Map接口类
     Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable
     HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
  [2]table是同步的,map不同步,故map在多线程中是不安全的;
  [3]map支持空的key、value,table不支持
  [4]Hashtable使用Enumeration进行遍历,HashMap使用Iterator进行遍历  
  [5]容器扩展的方式不一样,.Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是        16,而且一定是2的指数。
  [6]table中直接使用对象的hashCode作为hash,hashMap中重新计算hash。hashMap重新计算,对hash值做位运算,是为了          在hash数组上面,元素分配的更均匀一些,具体算法看不懂,可以看看大佬的博客。
  
2.HashMap的使用和介绍:
   拉链法,hash碰撞,equals和hashCode,hashMap为什么线程不安全等。从这几方面来讲;

   hashMap的结构从jdk18开始改变,当某一hashcode数组元素上的链表长度大于8时,会将链表改为红黑树结构。

   嗯,这块讲源码可能也会问道LinkedList的双向链表的实现。源码再问就是spring了,没啥说的,ioc,aop......

3.多线程并发

   java的concurrent包,线程的3种创建方式(runnable和callable以及Thread,如果算上线程池的话那就多了),java回调,countdownLaunch等等;

   死锁,数据共享,读写锁,互斥锁,悲观锁,乐观锁。
二、java web(框架和应用)

1.http:从基本风格和2中应用:restful和soa来讲;

2.restful(不是什么具体的框架,而是一种类似于mvc的一种架构风格,是http协议的最主要的表现形式):

   资源:通过uri对外暴露的可以获取访问的视频,音频,文本,json数据等等,由uri来抽象代指资源;

   表现层:资源的表现形式(格式),比如html,json,jpg等;

   状态转化:通过get,post,put,delete方法来操作资源,称为状态转化;

以上三层合一,就是我理解的restful;

三、数据库

感觉没啥好说的,就看看性能调优和索引模型原理,mysql存储引擎,和红黑树存储结构就行了吧~~

mysql存储引擎:InnoDB、MyISDM。从支持事务,行级锁,表锁,共享锁,排它锁,意向锁等方面聊聊,嗯也可以延伸着讲讲悲观锁和乐观锁。就没啥了吧~~~

四、jvm

另起一章博客去写了,https://blog.csdn.net/HuntermanFirst/article/details/102869124

五、事物

spring的事物机制,看看@Transactional。

可以结合数据库事务聊聊。

六、设计模式

1.单例,注意懒汉式的并发加锁问题,还有spring的单例加载;

2.装饰者模式,利用继承给类添加职责;

3.策略模式

4.工厂没啥说的

七、算法(没啥说的,都是基础中的基础)

1.基本排序算法:冒泡排序,选择~,插入~,快速~

2.贪婪算法,

3.辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫 欧几里德算法。(上学时候的东西)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值