Java基础面试总结

Get和Post的区别
1.Get是从服务器获取数据,Post是向服务器传送数据
2.Get的大小2Kb,Post没有限制
3.Get安全性低,Post安全性高
4.上传文件使用Post

重载和重写
1.重载是在同一个类中,具有相同的方法名,但参数的类型和个数不同
2.重写是子类继承父类,具有相同的参数和返回值类型,但是方法体不同

String、StringBuffer、StringBuilder的区别
1.String 字符串常量 不可变 字符串拼接是是两个不同的空间
2.StringBuffer 字符串变量 可变 线程安全 字符串拼接直接在字符串后追加
3.StringBuilder 字符串变量 可变 非线程安全 字符串拼接直接在字符串后追加
执行效率:StringBuilder>StringBuffer>String
(String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象,
StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,
在原来的基础上进行追加,所以性能比String要高,
又因为StringBuffer 是线程安全的而StringBuilder是线程非安全的,
所以StringBuilder的效率高于StringBuffer.)
对于大数据量的字符串拼接,采用StringBuffer、StringBuilder

HashTable和HashMap的区别
Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable
HashMap是线程不安全的 允许空的键和值 HashMap的效率要高
HashTable是线程安全的 不允许空的键和值 HashTable的效率要低

九大隐式对象
输入\输出对象:request、response、out
作用域通信对象:session、application、pageContext
Servlet对象:page、config
错误对象:exception

Forword和Redirect
Forword是请求转发 是请求的延续 共享request的数据 地址栏不变
Redirect是重定向 是新的请求 不共享request的数据 地址栏改变

JSP九大隐式对象的四个作用域的大小和作用范围
从大到小:application>session>request>page
application是全局作用范围 整个应用程序共享 生命周期:从应用程序开启到结束
session是会话作用域 用户第一次请求会产生一个新的会话,然后服务器就可以记住这个会话状态了
request是请求作用域 客户端的一次请求
page是 一个JSP页面

List、Set、Collection、Collections
List和Set都是接口,都继承接口Collection,List是有序可重复的集合,Set是无序不可重复的集合
Collections是以一个封装了很多集合操作的静态方法的工具类,因为构造方法是私有的,所以不能实例化
List接口实现类有ArrayList、LinkedList、Vector
(ArrayList和Vector是基于数组实现的,所以查询的时候速度快,
而在进行增加和删除的时候速度较慢LinkedList是基于链式存储结构,
所以在进行查询的时候速度较慢但在进行增加和删除的时候速度较快。
又因为Vector是线程安全的,所以他和ArrayList相比而言,查询效率要低。)

Java的基本数据类型
数据类型 大小
byte(字节) 1(8位)
shot(短整型) 2(16位)
int(整型) 4(32位)
long(长整型) 8(64位)
float(浮点型) 4(32位)
double(双精度) 8(64位)
char(字符型) 2(16位)
boolean(布尔型) 1位

冒泡排序:
public class MP{

public static void main(String[] args){
int a[] = new int[]{1,2,4,6,3,5,7,8,9,0};
int i,j;
for(i=0;i<a.length()-1;i++){
for(j=0;j<a.length()-i-1;j++){
if(a[j]<a[j+1]){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i=0;i<a.length();i++)
System.out.println(a[i]);

}

}

时间类型转换
public class SJ{

public static void fun(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String newDate;
try{
newDate = sdf.formar(new SimpleDateFormat("yyyyMMdd").parse("20190920"));
System.out.println(newDate);
}catch(ParseException e){
e.printStackTrace();
}
}
public static void main(String[] args){
fun();
}
}

阶乘
public class JC{
public static void fun(int num){
if(num<0){
System.out.pritln("请输入一个大于零的数字");
return -1;
}else if(num==0||num==1){
return 1;
}else{
return fun(num-1)*num;
}
}
public static void main(String[] args){
System.out.println(fun(10));
}
}

OSI七层模型 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层

JVM内存结构
Java虚拟机 内存结分别为堆和栈,
堆里面存放的是对象实例也就是new出来的对象
栈里面存放的是基本数据类型以及引用数据类型的地址
对于所谓的常量是存储在方法区的常量池里面

内存泄漏和内存溢出
内存泄漏就是应用程序在申请内存后,无法释放已经申请的内存空间。一次内存泄漏危害可以忽略,但如果任其发展可能会形成内存溢出。
内存溢出就是当应用程序申请内存时,没有足够的内存空间供其使用。

单例
单例就是该类只能返回一个实例
特点:1.私有化的构造函数 2.私有的静态的全局变量 3.公有的静态方法
分为饿汉式、懒汉式和双层锁式
一种是饿汉式,就是在类初始化的时候,创建对象,这种方式是线程安全的,在程序运行期间就这一个对象。
另一种是懒汉式,懒汉式是在第一次使用时才创建对象,但是如果在多线程环境中要考虑线程安全问题。
饿汉式:
public class Singleton1 {
private Singleton1() {};
private static Singleton1 single = new Singleton1();
public static Singleton1 getInstance() {
return single;
}
}

懒汉式:
public class Singleton2 {
private Singleton2() {}
private static Singleton2 single=null;
public static Singleton2 getInstance() {
if (single == null) {
single = new Singleton2();
}
return single;
}
}
线程安全:
public class Singleton3 {
private Singleton3() {}
private static Singleton3 single ;
public static Singleton3 getInstance() {
if(null == single){
synchronized(single ){
if(null == single){
single = new Singleton3();
}
}
}
return single;
}
}
通过双重判断来保证单列设计模式在多线程中的安全性,
并且它在性能方面提高了很多。
synchronized在方法上加锁 (同步锁)
synchronized在代码块内部加锁 (同步代码块)
synchronized(同步锁)
使用synchronized如何解决线程安全的问题?
1.synchronized在方法上加锁
2.synchronized在代码块内部加锁
1.懒汉 2.饿汉 3.双重判断

Switch默认接受的几种数据类型
byte、short、int、char

修饰符的作用范围:

private default protected public
同一个类中 可以 可以 可以 可以
同一个包的类中 可以 可以 可以
不同包的子类中 可以 可以
不同包的类中 可以

抽象类与接口的区别
1.一个类只能进行单继承,但可以实现多个接口
2.有抽象方法的类是抽象类,抽象类中不一定有抽象方法
接口中所有的方法的默认修饰符是public abstract,接口里的成员变量默认修饰符是public static final

报错的状态码
301永久重定向
302临时重定向
304服务端未改变
403访问无权限
200正常
404路径
500内部错误

原文地址:https://www.cnblogs.com/wellwell/p/11570406.html

时间: 2024-08-30 04:02:49

Java基础面试总结的相关文章

Java基础面试:集合、内部类、线程

package test; import java.util.Hashtable; import java.util.Map; public class test { public static String change(String param){ param=null; return param; } public static void main(String[] args) { String param1="p1"; param1=change(param1); Map ta

Java基础面试知识点总结

本文主要是我最近复习Java基础原理过程中写的Java基础学习总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理. 纸上得来终觉浅,绝知此事要躬行.笔者之前对每部分的内容 对做了比较深入的学习以及代码实现,基本上比较全面地讲述了每一个Java基础知识点,当然可能有些遗漏和错误,还请读者指正. Java基础学习总结 每部分内容会重点写一些常见知识点,方便复习和记忆,但是并不是全部内容,详细的内容请参见具体的

java基础面试

 * 以下内容是我在准备java面试的时候觉得有用,面试官很可能会问的一些问题  * 内容(除了代码)详情来自网络(学习的时候遇到不会的百度的 (*^__^*) )  * 如果大家发现有什么地方不对,请告诉我.谢啦!!☆⌒(*^-゜)v 1:java的基础类型 Java语言提供了八种基本语言 boolean char byte 8位 short 16位 int float 32位 long double 64位 注意:String本身就是一个对象而不是基本数据类型,String的变量名是对Str

Java基础面试复习一

做Java业务开发很久了,有些技术快忘了? 来吧,让我们从基础重新开始复习一下--- 1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有没有goto? java中的保留字,现在没有在java中使用. 3.说说&和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为

JAVA 基础(面试必用)

1.面向对象编程的三大特性是什么? (1).继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增 加新的方法使之更适合特殊的需要. (2).封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向对象计算始于这个基本概念,即现实世界可

JAVA基础面试(二)

11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用.也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用. 12.In

JAVA基础面试(四)

31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,"xyz"对应一个对象,这个对象放在字符串常量缓冲区,常量"xyz"不管出现多少遍,都是缓冲区中的那一个.NewString每写一遍,就创建一个新的对象,它使用常量"xyz"对象的内容来创建出一个新String对象.如果以前就用过'xyz',那么这里就不会创建"xyz&

JAVA基础面试(五)

41.a.hashCode() 有什么用?与 a.equals(b) 有什么关系?        hashCode() 方法对应对象整型的 hash 值.它常用于基于 hash 的集合类,如 Hashtable.HashMap.LinkedHashMap等等.它与 equals() 方法关系特别紧密.根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code. 42.字节流与字符流的区别 要把一段二进制数据数据逐一输出到某个设备中,或者从某个设备中逐

java 基础面试

1. &和&&的区别 答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 2.int 和 Integer 有什么区别 答: Java 提供两种不同的类型:引用类型和原始类型(或内置类型).Int是java的原始数据类型,Integer是java为int提供的封装类.Java为每个原始类型提供了封装类.原始类型封装类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,