当前位置:首页 > 技术经验 > 编程技术 > 正文内容

JAVA面试题记录

danran4年前 (2020-07-03)编程技术16820

网络协议

UDP协议:无连接通信协议,发送端和接收端不建立逻辑链接,消耗资源少,容易丢包,数据64kb以内(视频聊天,音频会议)。

TCP协议:传输控制协议,通过3次握手建立连接,数据比较安全(文件下载,上传,网页连)。

端口号:0-65535,1024之前端口不能用, ip地址+端口号保证数据发到对方计算机指定软件

基础

降低耦合:尽量用接口,少用继承,模块功能尽量单一,少用全局变量,多用设计模式

Final关键词:表明这个类不能被继承

二叉树遍历方式:前序遍历:根-左-右 中序遍历 左-根-右 后序遍历 左-右-根

继承跟聚合:继承指的是一个类继承另外的一个类的功能,并可以增加它自己的新功能的能力,聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;

单例模式:某个类只能有一个实例(懒汉式单例,饿汉式单例,双重检查)

工厂方法:定义一个创建对象的接口,让子类决定实例化那个类

优化数据查询:加索引,mysql索引底层是b树,增加主从服务器

红黑树:二叉平衡树

ArrayList 和 LinkedList :Arraylist底层是数组,linkedlist底层是列表速度快占内存

hashMap:是线程不安全的,HashMap底层是数组+链表+红黑树

抽象类和接口:都不能直接实例化,抽象类要被子类继承,接口要被类实现,接口可继承接口,并可多继承接口,但类只能单根继承

多态:多态是同一个行为具有多个不同表现形式或形态的能力,多态就是同一个接口,使用不同的实例而执行不同操作

public:被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。

private: 被其修饰的类、属性以及方法只能被该类的对象访问,其子类,挎包不能访问

protect: 被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

default:只允许在同一个包中进行访问。

IO和NIO:IO(BIO)是面向流的,NIO是面向缓冲区的

浅拷贝深拷贝: 浅复制仅仅是指向被复制的内存地址,深拷贝是直接开辟一块内存存储复制内容

数组与链表:数组是将元素在内存中连续存放(不能适应动态增减数据,寻找快),链表在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起(可以方便插入删除,寻找慢)

Http响应码:2成功,3重定向,4找不到资源

equals和==:==本质上比较是内存地址,equals内容比较

JDK 和 JRE: jdk,java 开发工具包;jre,java 运行环境

JAVA垃圾回收:1.判断:引用计数法(python),可达性算法(java)2.回收:复制收集算法,标记清楚算法,标记整理算法

String:String声明的是不可变的对象,StringBuffer是线程安全的,而 StringBuilder 是非线程安全的

线程和进程:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

int和Integer:int的包装类就是Integer

框架

IOC:就是将原本在程序中手动创建对象的控制权,交由给Spring框架来管理,底层就是工厂模式

AOP:能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可扩展性和可维护性

Mybaits如何映射数据库:通过注解或xml中配置的sql语句查询到数据库信息封装到list返回

扫描二维码推送至手机访问。

版权声明:本文由淡然博客发布,如需转载请注明出处。

管理员QQ:53461569

本文链接:http://danran0.cc/post/8.html

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。