码迷,mamicode.com
首页 > 编程语言 > 详细

Java面试基础部分

时间:2019-08-29 23:24:27      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:并发   syn   并发包   内存   code   容量   group by   bsp   runnable   

1.    Get和Post的区别
技术图片

 

 


2. cookies和session的区别

技术图片

 

 


3.HashMap和HashTable区别。

      HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。

      HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。

      HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。

 

 

      Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。

      Hashtable也是JDK1.0引入的类,是线程安全的,能用于多线程环境中。

      Hashtable同样实现了Serializable接口,它支持序列化,实现了Cloneable接口,能被克隆。

    继承的父类不同

      Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

      线程安全性不同

      javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

4. ArrayList和LinkedList的区别

1、ArrayList和LinkedList可想从名字分析,它们一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。

前者是数组队列,相当于动态数组;后者为双向链表结构,也可当作堆栈、队列、双端队列

2、当随机访问List时(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。

3、当对数据进行增加和删除的操作时(add和remove操作),LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。

4、从利用效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。

5、ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。

5. equals和==的区别

  1.  ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同 
  2. ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
  3. ==指引用是否相同, equals()指的是值是否相同

6.Thread类的方法有哪些,如何多种方式实现线程同步.

1.直接继承thread类;2.实现runnable接口;同步的实现方法有五种:1.同步方法;2.同步代码块;3.使用特殊域变量(volatile)实现线程同步;4.使用重入锁实现线程同步;5.使用局部变量实现线程同步
其中多线程实现过程中需注意重写或者覆盖run()方法,而对于同步的实现方法中使用较常使用的是利用synchronized编写同步方法和代码块。

7.JAVA线程和进程的区别、线程的创建

进程和线程的区别

        线程是进程中更小的并发单位,一个进程中包含多个线程。

        比如说聊天进程中包含有主线程、发送消息的线程和接收消息的线程。

        进程中负责执行程序的一个执行控制单元。

        线程负责程序的执行,而一个进程允许有多个控制单元,我们称为多线程。

 

    线程的创建方式

        第一种方法:

        1,    继承Thread类

        2,    重写Thread类里面的run方法

        3,    创建线程的子类对象

        4,    调用start方法启动线程

   

    第二种方法:

        1,    定义类实现Runnable接口

        2,    实现接口里的run方法,也就是将线程要执行的任务封装在run方法中

        3,    创建线程对象,然后将实现Runnable接口的类作为创建线程对象的参数传入

        4,    调用线程对象的start方法,启动线程

 

 

    线程安全

        1,    多线程操作共享数据

        2,    操作共享数据的代码有多条

    解决办法:同步代码块

            好处:解决线程安全问题

            弊端:降低了相率,每次都要去判断同步锁

    同步代码块和同步函数

        同步代码块的锁是任意对象,同步函数的锁是this

8. 现有一学生表结构(student_id,class_id,name),请写出统计每班有多少学生的SQL语句

 

select class_id,count(*) from student group by class_id

 

9.HTTP请求总共有哪几种类型

 

    除了get和post,还有一下这几种:

    HEAD:与GET请求类似,不同在与服务器只返回HTTP头部信息,没有页面内容

    PUT:上传指定URL的描述

    DELETE:删除指定资源

    OPTIONS:返回服务器支持的HTTP方法

    CONNECT:转换为透明TCP/IP隧道的连接请求

   请求报文和响应报文都是由以下4部分组成

   1.请求行

   2.请求头

   3.空行

   4.消息主体

 

Java面试基础部分

标签:并发   syn   并发包   内存   code   容量   group by   bsp   runnable   

原文地址:https://www.cnblogs.com/roke-j/p/11432372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!