java面试基础知识点整理

java 面向对象编程
java 的基本数据类型 : int double float boolean long short byte char
1.面向对象的三大特性
封装 将类的某些信息隐藏在类内部 不允许外部程序直接访问该类 而是通过该类提供的方法来实现隐藏信息的操作和访问
继承 是类与类之间的关系 子类拥有父类的所有属性和方法 除了private 外
多态 继承是多态的基础 父类的引用指向子类的对象 父类的引用指向本类的对象 Parent p = new Child()

2.集合
collection 下的三大类
list set queue(队列
list 有序集合 :add(Object) addAll(插入位置的索引,插入的list集合) remove(索引) get(索引)-返回-> Object 对象 set(索引,修改的元素值) indexOf(Object)-返回->索引位置 没有为(-1)
set 元素唯一 : add 没有修改方法 remove(Object) removeAll(Set) hasNext() 遍历
map 键值对: 搜索好帮手 put(Key,Value) remove(Key) clear()删除所有 .size()返回map键值对的个数
isEmpty()判空
第三种方式: Map.Entry
public static interface Map.Entry<K,V> 通过Map中的entrySet()方法获取存放Map.Entry<K,V>对象的Set集合。
Set<Map.Entry<K,V>> entrySet() 面向对象的思想将map集合中的键和值映射关系打包为一个对象,就是Map.Entry,将该对象存入Set集合,Map.Entry是一个对象,那么该对象具备的getKey,getValue获得键和值。
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, “aaaa”);
map.put(2, “bbbb”);
map.put(3, “cccc”);
// 第三种方式: Map.Entry对象 推荐使用 重点
// Set<Map.Entry<K,V>> entrySet()
// 返回的Map.Entry对象的Set集合 Map.Entry包含了key和value对象
Set<Map.Entry<Integer, String>> es = map.entrySet();
Iterator<Map.Entry<Integer, String>> it = es.iterator();
while (it.hasNext()) {
//返回的是封装了key和value对象的Map.Entry对象
Map.Entry<Integer, String> en = it.next();
// 获取Map.Entry对象中封装的key和value对象
Integer key = en.getKey();
String value = en.getValue();
System.out.println(“key=” + key + " value=" + value);
}

3.数组
Integer和int区别:
Integer是int的包装类,int则是java的一种基本数据类型
Integer变量必须实例化后才能使用,而int变量不需要
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
Integer的默认值是null,int的默认值是0

4.创建对象的方法
1.new
2.clone
3.newInstance
4.反序列化
5.String s = “abc”(这个是比较特殊的)

5。String StringBuffer StirngBuilder
String
使用finall关键字修饰字符数组来保存字符串 Sting对象是不可变的 修改时指向一个新生成对象(适用于操作量少)
StringBuffer
对方法加了同步锁(消耗内存) 线程安全 适用与单线程缓操作量大
StirngBuilder
性能较好 线程不安全 使用与多线程缓操作量大

6.自动装箱和拆箱
装箱:将基本类型用他们对应的引用类包装起来
拆箱: 将引用类型转化为基本类型

            1> byte       ------    Byte
                        2> short      ------   Short
                        3> int          ------    Integer
                        4> long       ------    Long
                        5> char       ------    Character
                        6> float       ------    Float
                        7> double   ------    Double
                        8> boolean ------    Boolean   

7.重写和重载
重写 :子类继承父类 输入数据一样 做出和父类不一样的响应 及覆盖父类方法
重载:同一个方法 输入数据的不同 做出不同的处理

8.构造武器
不能被重写 可以被重载
eg:一个类中可以有多个构造函数

9.finall finally finalize的区别
finall:用于声明属性 方法 和类 属性不可变 方法不可覆盖 类不可继承
finally:异常处理结构的一部分 表示总执行
finalize:Object类的一个方法 垃圾回收器执行的时候 会调用被回收对象的此方法

10.Nginx (通过负载均衡选择合适的服务器处理请求)
概念:是一个高性能的Http和反向代理服务器
特点:内存少,并发能力强,支持高达5万个并发连接数响应
正向代理:代理客户端
反向代理:代理服务器端
负载均衡:(调节)
1、轮询
2、加权轮询
3、iphash(radies做session共享 Nginx容易丢失)
动静分离
动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
静态资源直接从Nginx返回 动态资源通过Nginx访问服务器获取

11.& 和 && 的区别
& 作为逻辑运算符 左右两端 有一假为不成立 但是两端都会运行
&& 只要 左端条件为假 不会去判断右端成立

12.java参数传递
基本类型作为参数传递时 是传递值的拷贝 无论整么改变这个拷贝 原值是不会改变的
对象作为参数传递时 是把对象在内存中的地址拷贝一份传给参数

13.Spring

Ioc 和 Aop
Ioc:控制反转 把对象创建和对象间的调用过程 交给Spring管理 通过反射实现
目的:为了降低耦合
具体采用的方法依赖注入 di
依赖注入的几种方式:
1、接口注入
2、getter,setter方法注入
3、构造器注入
Aop:
简单的来说,面向切面编程,是一种代理模式。重点以外的代码自动执行,来达到增强效果
1、Before前置增强
2、After后置增强
3、Around 环绕增强
4、AfterReturning最终增强
5、AfterThrowing异常增强

动态代理模式:Aop jdk(实现一个接口)cglib(默认)

Spring 解决循环依赖
a创建过程中需要b 于是a将自己放到三级缓存里面 去实例化b,
b实例化时发现需要a ,
于是b先查一级缓存 没有 二级缓存 没有 三级缓存 找到a,
把三级缓存a删除 a放到二级缓存,
b顺利实例化后,将自己放到一级缓存中,回来创建a,
从一级缓存里拿b,完成创建 并将a放到一级缓存中

14.Stirng类的常用方法
1、indexOf() 查询指定字符串 -->索引 | -1
2、charAt()根据位置获取位置上某个字符
3、trim() 去空格
4、split(分割字符) 分割字符串
5、length() 返回字符串长度
6、subString()截取字符串
String substring(begin);
String substring(begin,end);
7、大小写转换
String toUpperCase();
String toLowerCase();
8、replace() 替换
String replace(oldchar,newchar);
9、equals 判断
boolean equals(str);
不区分大小写
boolean equalsIgnoreCase();

15.Session
用来跟踪用户的整个会话
通过在服务器端 确认用户身份
Cookie
通过在客户端 记录信息 确认用户身份
最大区别:
生命周期不同
session 从会话开始到结束
cookie 预先设置一个生存周期 或永久保存在本地文件

16.ajax
一种创建交互式网页的开发技术 在浏览器与web服务器之间使用异步数据传输,在不重载全部页面的情况下实现了对网页的更新
优点:不需要插件支持,体验好,提升性能,减轻服务器压力
缺点:后退前进按钮被破坏,搜索引擎支持不够,开发调试工具缺乏
步骤:
1、创建XMLHttpRequest对象 异步调用对象
2、创建一个新的Http请求,指定请求方式URL及验证信息
3、设置请求状态变化函数
4、发送Http请求
5、获取异步调用返回的数据
6、使用JavaScript和DOM实现局部刷新

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当准备408面试时,以下是一些可能的分科知识点整理: 1. 数据结构与算法:包括数组、链表、栈、队列、树、图等常见数据结构的基本概念、特性和操作,以及常见的排序和搜索算法。 2. 计算机网络:涵盖TCP/IP协议族、网络层、传输层、应用层等网络基础知识,包括IP地址、子网划分、路由器、交换机、HTTP协议等。 3. 操作系统:涉及进程管理、内存管理、文件系统、设备管理等操作系统基本概念和原理,如进程调度算法、内存分配算法、死锁处理等。 4. 数据库:包括关系型数据库的基本概念、SQL语言、事务处理、索引和查询优化等。 5. 编程语言:熟悉至少一种主流编程语言,如C/C++、Java、Python等,了解语言的基本语法、面向对象编程、异常处理等。 6. 离散数学:包括集合论、逻辑推理、图论、代数结构等数学基础知识,对算法和数据结构的理解有一定帮助。 7. 系统设计与架构:了解大型系统的设计原则和常见的架构模式,如分层架构、微服务架构、消息队列等。 8. 数据挖掘与机器学习:了解常见的数据挖掘算法和机器学习算法,如聚类、分类、回归等,以及常用的数据处理和特征工程方法。 9. 软件工程与项目管理:熟悉软件开发的基本流程和常用的开发方法论,如敏捷开发、测试驱动开发等,了解项目管理的基本概念。 10. 网络安全与加密:了解常见的网络攻击方式和防御方法,如DDoS攻击、SQL注入、加密算法等。 这些只是一些可能的知识点,具体还需要根据个人情况和面试要求进行调整和准备。同时,还建议多做一些面试题和编程练习,加强自己的实际操作能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值