今天上午出去玩了又(深深的罪恶感,但是下馆子是真的美汁汁呀~)
算法题:
1.秋叶收藏集(力扣每日一题):新的一个月,力扣终于更新主题了,上个月的递归啊树啊做了不少确实感觉自己提升了,这个月好像是开始动态规划专题了
思路如下:
①设置数组f[n][3],表示从0到n的叶子成为状态1或2或3需要调整几次,状态为0为左侧红叶,为1为左侧红叶和中间黄叶,为2为左侧红叶和中间黄叶和右侧红叶;
②初始状态第一个叶子只需要判断是否为黄来设置f[0][0],只有一个叶子那么第二个和第三个状态都无法使用,第二个叶子的第三个状态也无法使用,都设置为Integer的最大值;
③写出状态转移方程,遍历整个数组得到结果;
②初始状态第一个叶子只需要判断是否为黄来设置f[0][0],只有一个叶子那么第二个和第三个状态都无法使用,第二个叶子的第三个状态也无法使用,都设置为Integer的最大值;
③写出状态转移方程,遍历整个数组得到结果;
2.二叉树的最小公共祖先(刷面经又做到了,细枝末节再写一遍):
①若root为空或者为p,q中的一个则直接返回
②开始递归,左递归返回值记为LEFT右递归RIGHT
③根据LEFT和RIGHT的返回值判断情况返回结果
②开始递归,左递归返回值记为LEFT右递归RIGHT
③根据LEFT和RIGHT的返回值判断情况返回结果
3.二叉树的遍历(要求采用迭代,递归很简单也做了很多次了):
面试题:
1.HashMap和TreeMap区别:Hm无序,Tm有序;两者都不安全;Hm继承自AbstractMap,重写了hashcode和equals方法保证相同key哈希一定相同,而Tm继承自SortedMap,保持键的有序;Hm是基于Hash表实现的,可以通过设置一些属性调优,Tm是基于红黑树实现的,本身平衡,没有调优选项;Hm查找操作O(1),Tm查找操作O(logn);
2.类加载器:
BootStrap;Extention;System;
委派行;单一性;可见性;
3.一个类加载器就可以加载,为什么要三个加载器:
是同一个类加载器加载的类不保证包访问级别,这样的话就可以让三种加载器代表三种不同的安全级别,安全性更高;
4.索引为什么使用B+树:
首先和Hash比较:
哈希索引适合等值查询,但是不无法进行范围查询 哈希索引没办法利用索引完成排序 哈希索引不支持多列联合索引的最左匹配规则 如果有大量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题
其次和B树对比:
B+树数据都存放在叶子节点中,非叶子节点存放的是辅助索引,这样在内存页中可以存放更多的key;数据都存放在叶子节点,还使用链表将相邻节点链接起来,遍历十分方便,数据存放也更加紧密;
5.主键索引和非主键索引的区别
6.HTTP报文的内容(这个怪复杂,收藏了一个CSDN的帖子,下次再康康)
7.什么是内存泄露、内存溢出:
内存泄漏 memory leak:对象可达但不可用;是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
内存溢出 out of memory:内存大小不够;是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
8.如何防止内存泄露和溢出:
内存溢出 out of memory:内存大小不够;是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
8.如何防止内存泄露和溢出:
临时变量使用结束后手动置为NULL暗示GC
进行字符串处理时尽量使用StringBuilder,String是Final的,每个string对象都会独占一块内存区域
少用静态变量,静态变量在方法区,GC不会回收,(用永久代实现的方法区,垃圾回收行为在这个区域是比较少出现的,垃圾回收器的主要目标是针对常量池和类型的卸载)
尽量用对象池技术,避免不断的new对象后又丢弃
进行字符串处理时尽量使用StringBuilder,String是Final的,每个string对象都会独占一块内存区域
少用静态变量,静态变量在方法区,GC不会回收,(用永久代实现的方法区,垃圾回收行为在这个区域是比较少出现的,垃圾回收器的主要目标是针对常量池和类型的卸载)
尽量用对象池技术,避免不断的new对象后又丢弃
9.Lock和Synchronized区别
10.Lock的底层实现(没来得及看了,也留在明天了)
11.Object常用方法:
registerNatives()(注册Native方法)、getClass()、hashCode()、equals()、clone()、toString()、notify()、notifyAll()、wait(long)、wait(long,int)、wait()、finalize()
12.重写equals的原则(之前面试问到过就不会):自反性;对称性;传递性;一致性;
13.集合类(重新复习了一遍)
明天还要加油!
全部评论
(2) 回帖