准备补强基础知识了。
mysql实现原理
java并发编程
java集合源码
java web源码
java虚拟机
大型网站构架
spring源码
算法
基础还是不行,准备狂啃这些书了,3-4个月的时间。
--2017年6月22日
北京 今日头条二面后
造化弄人,昨天突然收到了今日头条的三面邀请,今天面完3,4面过了!!!
只能说不要放弃吧,机会只会眷顾有准备的人
--2017年6月28日
北京 今日头条四面后
转眼,实习快结束了啊,在头条还是学了好多东西的,感触挺深,包括技术的,也包括其他的,比如沟通技巧,比如人际关系
记录一下自己 技术上需要提高的点:
1.线程池
2.深入了解关系数据库,nosql数据库,缓存数据库各一种,暂定mysql,mongodb和redis
3.java虚拟机
4.架构
5.多线程,分布式锁
6.go
7.nginx, cassandra类数据库
8.如何设计缓存
9.consul
实现类:hashmap,hashtable,concurrenthashmap,linkedhashmap,treemap。
map类型的接口:map->sortedmap->navigatablemap,一层比一层的api丰富。
map就是最最基本的kv;
sortedmap新增了对entry的比较,三种api,一个是可以返回范围的视图(注意会彼此影响)range或者大于或者小于,一个是最大最小,最后就是根据大小迭代
navigatablemap在上述基础上又增加了对entry级别的前驱后继的api
而treemap就是底层使用了红黑树的实现了navigatablemap接口的实现类。
先看hashmap
默认值:大小16,装载因子0.75,扩容倍数2
java1.8的优化
1.链表大于8时,变为红黑树;
2.对index的优化。
先取hashcode;
高低位异或运算;
与size-1与运算;
在jaba1.8里面,扩容时index新索引直接看异或运算以后的h的扩容前容量对应的位是1还是0,如果是0,那么index不变,否则等于扩容前容量+原来index,省去了一次与运算;
java spring bean相关:
实例化时机:默认是单例且非延迟的,会在启动时存入map;如果只改为延迟,会在第一次用的时候实例化;如果是非单例,则会在每一次用的时候实例化;
如何实例化:通过配置文件或者扫描类找到定义的bean,然后使用反射机制构造实例。
声明周期:实例化,设置属性setter和cons,Aware接口(name和factory),init-pre,init,init-post(这两个post都是得实现接口),销毁