基础篇-基本功

1、int和integer的区别

1.1、int是java的基本类型,integer是int的包装类

1.2、int的默认值为0,integer的默认值为NULL

1.3、integer是需要声明才能使用,创建一个指针指向该对象。int可以直接使用,存储的是数据值

 

2、面向对象的特征

1、封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2、继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

3、多态:允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

 

3、final, finally, finalize 的区别

1、如果一个类被申明为final,意味着它不能再派生出新的子类,不能作为父类被继承。将变量和方法声明为final变量的,可以保证它们在使用中不被改变。被声明为final的变量必须在申明时给定初值,而在以后的引用中只能读取不可以被修改。被申明为final的方法也同样只能使用不能重载。

2、finally-在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。例如线程的释放、锁的释放、释放对象等

3、finalize()方法是在垃圾收集器删除对象之前对这个对象的调用。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做好必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用的情况下对这个对象的调用。

 

4、重写、重载

重写:存在于父子类中,子类重写父类的同名方法,并且返回值、参数个数及类型等不能发生变化。访问修饰符的限制一定要大于被重写方法的访问修饰符。重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

重载:存在于同一个类中,方法名相同。参数个数不同或类型不同、返回值类型可以不同。

 

5、抽象类和接口有什么区别

相同点:都是上层的抽象层,不能被实例化。都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不比提供具体的实现。

不同点:在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。

 

6、说说反射的用途及实现

用途:很多框架(比如 Spring)都是配置化的(比如通过 XML文件配置 JavaBean,Action之类的),为了保证框架的通用性,他们可能根据配置文件加载不同的对象或类,调用不同的方法,这个时候就必须用到反射——运行时动态加载需要加载的对象。

实现:允许运行中的 Java 程序获取自身的信息,并且可以操作类和对象的内部属性。JVM 在运行时动态加载的类或调用方法或属性,他不需要事先(写代码的时候或编译期)知道运行对象是谁。

 

7、volatile

作用:被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象。

实现原理:

    1、线程会从系统内存中将数据读取到内部缓存,当被volatile修饰的变量修改后JVM会发送一条Lock前缀的指令会引起处理器缓存写回内存;

    2、一个处理器的缓存回写到内存会导致其他处理器的缓存失效;

    3、当处理器发现本地缓存失效后,就会从内存中重读该变量数据,即可以获取当前最新值。

 

8、http的get和post请求区别

1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。

2) GET方式提交的数据最多只能有2048字节,而POST则没有此限制。

3) 安全性问题,使用 Get的时候,参数会显示在地址栏上,而 Post不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

 

9、session与cookie 区别

1、cookie是属于session对象的一种,Cookies不会占用服务器资源是存在客户端内存的。而Session会占用服务器资源的。

    cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie 欺骗,如果主要考虑到安全应当使用session

    session会在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用cookie

    将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在 cookie 中

2、session中保存的是对象,cookie中保存的是字符串。

3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

4、session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session,这种方法将失效。

 

10、session 分布式处理

1、session黏性。就是说,用户在访问了某台服务器后,之后的操作就让其只走该服务器就好。

优点:操作简单,不用对session做任何操作

缺点:当一台机器挂掉后,流量切向其他的机器。会丢失部分用户的session

适用场景:发生故障对客户产生的影响较小;服务器发生故障是低概率事件。

2、使用广播的方式

当一台服务器中的session中(增删改)了之后,将这个session中的所有数据,通过广播一样的方式,同步到其他的服务器中去。

优点:容错性增高

缺点:机器不能太多,session数量不能太大,否则会造成网络阻塞,是服务器变慢。

3、使用中间件共享session

使用redis或者Memcached去当做有个中间件,session中的数据存放在其中。这里需要的是redis或者Memcached必须是集群。

4、session数据存放数据库中

 

11、JDBC 流程

1、 加载JDBC驱动程序

2、 提供JDBC连接的URL

3、创建数据库的连接

4、 创建一个Statement

5、执行SQL语句

6、处理结果

7、关闭JDBC对象

 

12、MVC设计思想

M:Model 模型

V:View 视图

C:Controller 控制器

模型就是封装业务逻辑和数据的一个一个的模块,控制器就是调用这些模块的(java中通常是用Servlet来实现,框架的话很多是用Struts2来实现这一层),视图就主要是你看到的,比如JSP等.

当用户发出请求的时候,控制器根据请求来选择要处理的业务逻辑和要选择的数据,再返回去把结果输出到视图层,这里可能是进行重定向或转发等.

 

13、equals 与 == 的区别

equlas是用来判断值是否相等,==是用来判断是否是同一个对象。

值类型(int,char,long,boolean等)都是用==判断相等性。对象引用的话,==判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(override)这个方法,用于判断对象的等价性。例如String类,两个引用所指向的String都是”abc”,但可能出现他们实际对应的对象并不是同一个(和jvm实现方式有关),因此用==判断他们可能不相等,但用equals判断一定是相等的。

 

14、初始化块是什么?

 

括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前执行!其实初始化块就是构造器的补充,初始化快是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!!好处是可以提高初始化块的复用,提高整个应用的可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值