1月26日-备孕春招40天-第16天

①leetcode

86-90

两个没做出来的题:

1,扰乱字符串:

https://leetcode-cn.com/problems/scramble-string/

2,格雷编码:

https://leetcode-cn.com/problems/gray-code/

数组和链表已经基本熟练了,一般就是多指针、逆置等。链表建一个头节点可以省去很多判断,要舍得用引用。回溯和递归的中等题目也都可以写出来了。

dp真的是没有上限,很多题都反应不过来是dp,需要抽空专项训练一下。

②剑指offer:

栈的推入弹出、二叉树层次遍历、之字遍历(用两个栈,进行每一个层次的遍历)、判断是否是先中后序遍历(找根节点,然后递归)

③mybatis:

一级缓存和二级缓存、注解

④八股文:

发现很多问题的回答都看不懂,需要自己总结一下,用自己的思想表达出来观点,这可能不是最正确的答案,但是最高效的记忆方法:

Q:String、StringBuilder、StringBuffer的区别?

String是final,这样stringpool的需要,这样可以线程安全,每次修改都会重新创建一个String,因此多次修改的情况String开销较大,String是基础数据类型,在常量池中,不使用new创建两个String的情况可以用==比较(==比较是不是同一个引用,equals()比较是不是值相等,等价)。StringBuilder是非线程安全的,适合应用在单线程的字符串大量修改的情况。 StringBuffer是线程安全的,适合多线程操作字符串。

Q:final关键字的作用?

基本数据类型不能改变。引用类型不能修改引用其他,但是被引用的内存内容可以改变。修饰方法时,方法不能被重写但是可以重载(参数列表不同)。修饰类不能被继承(太监类)

Q:static关键字

静态变量,跟着类。相对的是实例变量,跟着对象,对象消亡则实例变量消亡。 (private:自己可见。protect:子类可见。public:公开)

Q:存在继承关系下的初始化顺序?

父类的静态变量、静态语句块。子类的静态变量、静态语句块。父类的实例变量、普通语句块、构造函数。子类的实例变量、普通语句块、构造函数。

Q:说一下抽象类和抽象接口?

抽象类和抽象接口使用abstract声明,类中有抽象方法则一定为抽象类。抽象类不能被实例化(new 一个对象)。 接口只能时static或final,接口中的变量必须时public,方法必须时public abstract。 类只能继承一个,接口可以实现多个,抽象类和抽象接口都是描述一些统一的规范和特点,抽象类目的的实现代码的复用,抽象接口是为了实现一些共同的约束。

Q:什么是方法重写?

声明一个和父类相同的方法,需要子类的方法权限更大,子类的返回值需要是父类的返回值或者是父类返回值的子类型,子类的异常类型需要是父类的异常类型或子类型。

Q:创建一个栈的开销?

栈帧、局部变量、常量池、返回值、pc

Q:面向对象的三大特点?

封装、继承、多态。封装指隐藏内部实现的细节,安全性高。继承,不同的对象可能存在着相同的特点,继承可以实现代码的复用性,java中对象可以继承一个父类。多态,一个对象可以有多种状态,父类的引用指向子类实例。

Q:CopyOnWriteArrayList的原理?

写的时候新建一个数组,然后加锁,写完再覆盖回去,如果写的过程中有读,则读旧数据,适合读多写少的情况。

Q:ArrayList与LinkedList区别?

数组和链表的区别,一个是线性存储的,一个是链式存储的。ArrayList每次扩容是之前的1.5倍。

Q:hashmap和hashtable的区别?

hashmap使用hash值(一次16位右位移混合)解决冲突,负载因子0.75,元素达到3/4则扩容。hashtable是数组和链表实现,数组部分是主体,链表是为了防止哈希冲突,hashmap不安全,hashtable安全。treemap基于红黑树实现。map的put()方法,先检查是否需要扩容,检查hash值,不存在就直接添加,存在则替换或者拉链法。

Q:hashmap在7和8下的区别?

1.7中使用数组+链表,1.8中使用数组+链表+红黑树。 1.7头插法,1.8尾插法。 如果需要扩容,1.7先扩容在插入(重新定位进行扩容),1.8先插入在扩容(简单逻辑判断是否扩容)。

全部评论

相关推荐

昨天 11:23
重庆邮电大学 C++
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务