JAVA复习面经(十四)

面试难度:<mark>☆☆☆</mark>

问:cookie,session

答:由于Http协议是无连接的,因此需要采用cookie或session的方式来判断当前的登录用户。cookie其实是一个K-V形式的文本数据包,客户端第一次发送请求给服务器端的时候,服务器端会返回一个特定的cookie,客户端将服务器端的cookie保存,并在下次数据发送的时候带上cookie。session与cookie不同,其实保存在服务器端的针对一个会话的一个特殊标识,只要会话不中断,那么session就会存在,session的保存形式也很多样如集群、数据库、文件中。

问:http,https

答:http是超文本传输协议,属于应用层的协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。而https协议则在http协议上采用SSL进行加密,

问:Java三大特性:封装,继承,多态

答:封装,指的是隐藏类的属性和变量,只通过特定的接口和方法对外开放;继承指的是一个类通过使用extends关键字,获得了某一个父类的非private方法和非private变量,从而实现代码的重用;多态,分为运行时多态和静态多态,静态多态是指对父类方法进行重写,从而实现一个方法不同参数下实现不同功能。运行时多态则是指在代码运行期间,采用强制的类型转换,获取子类对象,并调用子类的方法。

问:集合:ArrayList,LinkedList,HashMap

答:ArrayList采用数组实现,其查找会优于LinkedList。LinkedList则采用链表实现,其插入和删除会优于ArrayList。HashMap在jdk1.8采用数组+链表/红黑树的方法,其红黑树是为了解决多次冲突下,链表长度过长导致的查询效率低下的问题。但hashmap在多线程下是线程不安全的,原因是hashmap在1.7中使用的头插***造成hashmap出现死循环的情况。在1.8中依旧是不安全的,但是由于使用了尾插法,因此不会出现死循环的情况。但依旧会出现数据覆盖的情况。

问:Object 方法

答:wait(),notify(),getClass(),noitfyAll(),hasCode(),toString();

问:设计模式

答:单例模式,其中又分为懒汉和饿汉模式,懒汉模式采用在别的线程需求当前类的资源的时候,才进行创建。而饿汉模式则相反,在类变量初始的时候就进行单例对象的创建。工厂模式,指允许写一个类或接口,并被多个子类继承,从而实现方法的多态。抽象工厂模式,则进一步将工厂做成抽象类,各自产品继承抽象的工厂类。

算法:链表倒数第K个节点

答:简单题,采用快慢指针即可。

算法 :螺旋矩阵

答:简单的模拟题,最暴力的方法可以采用一个二维的visited数组。

参考资料:
字节跳动教育客户端二面面经