zoukankan      html  css  js  c++  java
  • Java常见面试题总结(一)

    一.简述Java语音的基础语法由哪些部分组成?

      1.关键字

      2.标识符

      3.注释

      4.常量和变量

      5.运算符

      6.语句

      7.函数(方法)

      8.数组

    二.简述你常用jdk中lang包和util包下类的名称

      Java.lang

          该包提供了Java编程的基础类,例如 Object、Math、String、StringBuffer、System、Thread等,不使用该包就很难编写Java代码了    

      java.lang:Boolean:将原始数据类型boolean对象化的类。该类的实例对象除了包含一个boolean值之外,还提供boolean String之间转化等处理boolean的方法。

        Long 、Integer 、Byte、Float:对象化类

        

        .Class :该类的实例对象表达Java应用中正在运行的类或者接口。该类没有公共的构造方法,所以不能由Java虚拟机自动实例化,而是由ClassLoader实例化

        .Math :供了基本的数学运算方法

      Java.util

          该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类

        日期类Date

        随机数类Random

        向量类Vector:提供了向量(Vector)类以实现类似动态数组的功能。在Java语言中。正如在一开始就提到过,是没有指针概念的,为了弥补这点缺陷

        栈类Stack:Vecto的子类,提供了堆栈这种高级的数据结构

        LinkedList类、ArrayList类、HashMap类

        延伸

        java.io:该包通过文件系统、数据流和序列化提供系统的输入与输出。 

          java.awt:这两个包提供了GUI设计与开发的类。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。

          java.sql:该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API。

          java.net:该包提供实现网络应用与开发的类。

    三.如何提高反射的性能

          需要多次动态创建一个类的实例的时候写一个缓存

    四.有哪些主流的分布式数据库中间件

          

          

     五.jdbc如何实现具名参数

    https://www.cnblogs.com/longronglang/p/6271001.html

    六.写出两个正则表达式:验证十五号或者十八号的身份证号、以大写字母开头,长度6至12位,必须包含字母数字

      

    正则表达式

    十八位: ^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$

    十五位: ^[1-9]d{5}d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{2}$

    简单的JS验证示例

      function isCardNo(card)
    {
    // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    var reg = /(^d{15}$)|(^d{18}$)|(^d{17}(d|X|x)$)/;
    if(reg.test(card) === false)
    {
    alert("身份证输入不合法");
    return false;
    }
    }
    以大写字母开头,长度6至12位,必须包含字母数字js验证:^(?![^a-zA-Z]+$)(?!D+$)[a-zA-Z0-9]{6,}$
     

    七.写出Java中json遍历算法(请注意:有多级子节点) 

    八.基于Java反射技术设计ORM的解决思路 

    https://blog.csdn.net/u010005424/article/details/69789331

    九.什么是多线程,线程并发怎么解决

       进程可以简单的理解为一个可以独立运行的程序单位。它是线程的集合,进程就是有一个或多个线程构成的,每一个线程都是进程中的一条执行路径。

          那么多线程就很容易理解:多线程就是指一个进程中同时有多个执行路径(线程)正在执行。

    为什么要是用多线程(延伸)?

      优点:

      1.在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。

      2.可以提高程序的效率。

      3.在一些等待的任务上,如用户输入,文件读取等,多线程就非常有用了。

      缺点:

      1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。

      2.影响系统性能,因为操作系统需要在线程之间来回切换。

      3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。

      4.线程使用不当会发生很多问题。

      总结:多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)

    线程并发怎么解决:

    十.列举最近阅读过的开源项目源码的项目名称  

      GitHub

  • 相关阅读:
    Redis源码分析(二十一)--- anet网络通信的封装
    leetcode 总结part1
    leetcode String to Integer (atoi)
    leetcode 165. Compare Version Numbers
    leetcode 189. Rotate Array
    leetcode 168. Excel Sheet Column Title
    leetcode 155. Min Stack
    leetcode 228. Summary Ranges
    leetcode 204. Count Primes
    leetcode 6. ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/wh1997/p/10510837.html
Copyright © 2011-2022 走看看