zoukankan      html  css  js  c++  java
  • Java基础概念

    1、抽象类和接口的区别与相同

    接口和抽象类的相似性
    1)都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。
    2)都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 
    接口和抽象类的区别
    1)接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。
    2)接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。
    3)接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
    4)接口里不能包含初始化块,但抽象类里完全可以包含初始化块。
    5)一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。

    2、重载和重写的区别


    重载Overloading是一个类中多态性的一种表现。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
    调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
    重载的规则:
    1)必须具有不同的参数列表;
    2)可以有不同的返回类型,只要参数列表不同就可以了;
    3)可以有不同的访问修饰符;
    4)可以抛出不同的异常;
    重写方法的规则:
    1)参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
    2)返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
    3)访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    4)重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
    父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

    3、session和cookie的区别与联系


    cookie和session都是用来跟踪浏览器用户身份的会话方式。
    cookies:是针对每一个网站的信息,每一个网站只对应一个,其它网站不能访问,这个文件是保存在客户端的,
    每次你打相应网站,浏览器会查找这个网站的cookies,如果有就会将这个文件起发送出去。
    cookies文件的内容大致包函这些信息如用户名,密码,设置等,
    也可以是web服务器按照一定算法产生的只有Web服务器可以理解的数据,这些数据发送给客户端,客户端带着这些数据访问该网站才能被该网站识别。
    session: 是针对每一个用户的,只有客户机访问,程序就会为这个客户新增一个session。session里主要保存的是用户的登录信息,操作信息等。
    这个session在用户访问结束后会被自动消失(如果超时也会)。
    一、cookie与session的区别
    cookie保存在客户端,未设置存储时间的cookie为会话cookie保存在浏览器的进程开辟的内存中,当浏览器关闭后会话cookie也会被删除;设置了存储时间的cookie保存在用户设备的磁盘中直到过期。
    session保存在服务器端,存储在IIS的进程开辟的内存中。
    二、cookie与session的联系
    当服务器端生成一个session时就会向客户端发送一个cookie保存在客户端,这个cookie保存的是session的sessionId。
    这样才能保证客户端发起请求后客户端已经登录的用户能够与服务器端成千上万的session中准确匹配到已经保存了该用户信息的session,
    同时也能够确保不同页面之间传值时的正确匹配。

    注:为了防止客户端禁用了cookie而无法使用session的情况可以把sessionId和其他用户信息重写到url中,每次请求都在url中附带sessionId和用户信息(不包含用户的敏感信息)


    4、线程和进程的区别


    进程:具有一定独立功能的程序,数据集合的一次活动
    线程:是进程的实体,CPU调度的一个基本单元,比进程更小的可以独立运行的单元 
    多线程程序拥有高并发性,对其它程序不友好;进程运行时各内存相互独立,线程是内存共享

    5、内存溢出原因和解决方法

    溢出原因
    1)内存中加载数据量过于庞大
    2)集合类中对象引用后未清空使得未能回收
    3)代码存在死循环,或循环产生过多重复对象实体
    4)使用第三方软件有bug
    5)启动参数内存值设置过小

    解决方案:
    1)修改JBM启动参数,直接增加内存
    2)查看日志,查看out of memory异常前是否有其它异常错误
    3)代码走查和分析,找出异常位置:
      数据库查询中是否有一次获得全部数据的查询,尽量分页查询;
      检查代码是否有死循环或递归调用;
      是否有大循环重复产生新对象实体;
      是否有获取全部数据的查询;
      检查List map等集合对象引用后是否清除。
    4)使用内存工具动态查看内存情况


    6、二叉树的思路
    7、冒泡排序
    8、联系上下文操作
    9、字符串比较

  • 相关阅读:
    Design Pattern: Gof
    ZT --- extern "C"用法详解 2010-08-21 19:14:12
    OCR
    Linux strace命令
    wireshark esp
    https://sourceware.org/gdb/onlinedocs/gdb/Forks.html
    12306网上买火车票选择上中下铺的方法
    gdb调试有fork的程序
    named piped tcp proxy
    bash 提示用户输入 choice
  • 原文地址:https://www.cnblogs.com/LWK5100/p/14233625.html
Copyright © 2011-2022 走看看