zoukankan      html  css  js  c++  java
  • Java基础知识&面试题

    什么是面向对象编程?

    面向过程:按照步骤解决问题
    面向对象:把构成问题的各个事物分解成各个对象,对象作为程序基本单位,将程序和数据封装其中,以提高程序的重用性、灵活性和可扩展性。

    Java三大特性

    封装
    继承
    多态性
    

    Java八种基本数据类型

    8种基本数据类型:

    byte、short、int、long
    float、double
    boolean
    char
    

    3种引用数据类型:

    对象、数组、接口
    

    Java多线程实现方法

    Thread —— 类,继承
    Runnable——接口,实现implement
    实现Callable接口通过FutureTask包装器来创建Thread线程
    使用ExecutorService、Callable、Future实现有返回结果的多线程
    

    Thread类中的start()和run()方法有什么区别?

    • start():作用是启动一个新线程,新线程会执行相应的run()方法,不能被重复调用;
    • run():可以被重复调用,单独调用run()的话,会在当前线程中执行run(),不会启动新线程

    三个线程T1、T2、T3,如何确保它们按顺序执行?

    • join():等待线程结束,可以实现线程按顺序执行

    编写一个线程安全的单例模型

    https://www.cnblogs.com/x_wukong/p/3962315.html

    String、StringBuilder、StringBuffer三者区别

    • 运行速度/执行速度:StringBuilder > StringBuffer > String
      • String是字符串常量(char保存),对象创建之后不可更改;前两者是字符串变量,是引用类型,是可以更改的。
    • 线程安全:StringBuilder是线程不安全的,StringBuffer是线程安全的。
      • StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程安全;
      • StringBuilder的方法则没有synchronized关键字
      • 多线程-StringBuffer 单线程-StringBuilder
    • 结论:
      • String:适用于少量的字符串操作情况
      • StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
      • StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况

    垃圾回收

    与垃圾回收相关的JVM参数

    -Xms/-Xmx —— 堆的初始大小/堆的最大大小
    -Xmn —— 堆中年轻代的大小
    -XX:-DisableExplicitGC ——让System.gc()不产生作用 
    -XX:+PrintGCDetail —— 打印GC的细节 
    -XX:+PrintGCDateStamps —— 打印GC操作的时间戳
    

    Java中final关键字有哪些用法

    1、修饰类:表示该类不能被继承;
    2、修饰方法:表示方法不能被重写;
    3、修饰变量:表示变量只能一次赋值,值不能被修改,即是常量
    

    数据类型之间的转换

    1)如何将字符串转换为基本数据类型?
    2)如何将基本数据类型转换为字符串?

    1)调用基本数据类型对应的包装类中的方法parseXXX(String)或者valueOf(String)即可返回基本类型。
    2)方法一:将基本数据类型与空字符串连接(+);
       方法二:调用String类中的valueof()方法返回相应字符串。
    

    Error和Exception有什么区别?

    Error:表示系统级的错误和程序不必处理的异常,是恢复不是不可能 但很困难的情况下的一种严重问题,比如内存溢出。
    Exception:表示需要捕获或者需要程序运行处理的异常,是一种设计或实现问题,也就是说如果程序运行正常,从不会发生的情况。
    

    try()里有一个return语句,那么紧跟在这个try后的finally{}里面的code会不会被执行?什么时候被执行,return之前还是之后?

    会执行。在方法返回调用者之前执行。因此,若finally修改返回值,可能会导致问题。
    

    final,finally,finalize的区别

    final:修饰符,可以修饰类、方法、变量。    
    finally:通过放在try catch的后面构造总是执行的代码,可以将释放外部资源的代码写在finally块中。  
    finalize:Object中定义的方法,Java中运行使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时候调用。
    
  • 相关阅读:
    Java接口自动化测试实战001----get、post方法实现与封装
    临近年关,两个磁盘占满引起的服务下线
    Abp小试牛刀之 图片上传
    Abp vNext异常处理的缺陷/改造方案
    Oh my God, Swagger API文档竟然可以这样写?
    【C#】DockPanelSuite 中 DockState.Document 状态下子窗体控件不显示的解决方案
    环境系列——cygwin启动flink
    环境系列——window10环境下编译Flink源码编译
    弱肉强食——《哆啦A梦:大雄的新恐龙》观后感
    bilibili插件推荐
  • 原文地址:https://www.cnblogs.com/amyzhu/p/9227118.html
Copyright © 2011-2022 走看看