在油管上搜到的一个查看量最高的面试题整理并复习一下java知识。

老印已经感觉已经占领了油管上编程教程的频道,一搜索编程相关的教程,全都是印度人做的,口音听了分分钟怀疑人生。听完他们的教程,再听正常英语感觉是真的亲切。附上链接

文章目录

  • 基础问题
    • Q1. What is the difference JRE,JVM,JDK
    • Q2. What is the synchronization(同步)
    • Q3. difference between processes and threads.进程和线程的区别,附:并发和并行的区别
      • 进程和线程
      • 并发和并行的区别
      • 同步和异步
    • Q4. 什么是wrap封装
    • Q5 final, finally,finalize
    • Q6 string, string builder,stringbuffer
    • Q7 Heap , Stack
    • Q8 array,arraylist,和vector的区别
    • Q9. difference HashMap and HashTable
    • Q10. equals and "=="
  • OOP问题
    • Q1. 抽象类和接口的区别
    • Q2. 什么是多态polymorphism
    • Q3.重写和重载
  • Servlet
    • Q1. 什么是servlet
    • Q2. 什么是session和cookies
      • 什么是session
      • 什么是cookie
    • Q3. 什么是Request Dispatcher 请求调度?
  • JDBC
    • Q1. 什么是JDBC driver
      • 什么是JDBC
    • Q2. JAVA连接数据库的步骤
  • Spring
    • Q1. 什么是Spring
    • Q2. 什么是SpringMVC
    • Q3. 什么是Hibernate

基础问题

Q1. What is the difference JRE,JVM,JDK

JVM:java virtual machine虚拟机,java二进制码执行的运行环境。不同的操作系统需安装不同的JVM
JRE: java runtime environment 是实现JVM的运行环境,他为JVM提供运行代码时所需要的class 库
JDK: java development kit 包含java编译需要的工具,及文档和库等,他包含JRE。

Q2. What is the synchronization(同步)

类似于很多人一起定一个火车票座位,当有多个人订的时候,只有一个人可以订到,并且会被锁定,这个时候其他人就不能再使用这个座位。多个线程来的时候就会有一个同步锁,来锁定一个线程。

Q3. difference between processes and threads.进程和线程的区别,附:并发和并行的区别

进程和线程

一个操作系统运行多个进程,每个应用为一个进程,每个进程可以运行多个线程。这也就是并发编程。
操作系统控制进程,开发者控制线程。

并发和并行的区别

针对某一个应用程序,也即一个进程来定义。
并发:一个应用程序如果可以开启多个线程让多个线程同时存在,但是交替执行(比如在单核处理器上)则他称之为并发执行。
并行:一个应用程序能并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行

并发编程:指在同一时间执行多个任务。又包含并行,和并发。并发不一定并行,但并行一定并发

同步和异步

同步和异步是概念,并发,并行,串行,才是具体实现形式。
同步:多个任务情况下,一个任务A执行结束,才可以执行另一个任务B,调用方法在当前线程中运行,且会阻塞线程。只存在于一个线程中。具体利用串行方式来实现。
异步:多个任务情况下,一个任务A正在执行,同时可以执行另一个任务B。任务B不用等待任务A结束才执行。存在多条线程。并发和并行其实是异步线程实现的两种形式。并行其实是真正的异步。

Q4. 什么是wrap封装

就是把基本类型数据转化成他对应的对象。

Q5 final, finally,finalize

Q6 string, string builder,stringbuffer

String是不可变的,StringBuilder和StringBuffer是可变的

Q7 Heap , Stack

Q8 array,arraylist,和vector的区别

array是放相同的基本类型或者相同的引用类型的数组,他在初始化时size就固定了,而不能改变。
arrayList像一个动态数组,他可以动态的改变size,线程安全的。
As the documentation says, a Vector and an ArrayList are almost equivalent.

Vector跟arraylist几乎相同但是是线程不安全的,所以一般情况下都用arrayList而不用vector,“只有学生或者没经验的程序员用vector”.“think in java”说的是现代版本的java是用arraylist来替换了vector所以vector只出现在老版本的java中。

Q9. difference HashMap and HashTable

现代java用HashTable 代替老版本HashMap,HashTable是同步并且线程安全可以运用在多线程,而HashTable不具备该特征。

Q10. equals and “==”

equals比较的是对象中的value,基本类型没有
“==”比较的是对象的地址,基本类型的值

public static void main(String[] args) {String str1  = "abc";String str2 = "abc";String str11 = new String();String str22 = new String();int a = 1;int b = 2;print(str1 == str2);//true 比较的是地址  java把字符串常量统一组织起来放到特定地址,并且所有内容相同的字符串会指向同一个地址。print(str11 == str22);//false 比较的是地址print(str11.equals(str22));//true 比较的是对象的值,而基本类型没有equals方法}

OOP问题

Q1. 抽象类和接口的区别

抽象类
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板
接口
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

Q2. 什么是多态polymorphism

多态就是“一个接口可以有多种实现"。
也就是说一个接口在不同的环境下表现出不同的功能。

多态举例:比方说按下 F1键这个动作是一个类,如果当前在 Word 下弹出的就是 Word 帮助;在Windows 下弹出的就是 Windows 帮助和支持,在浏览器下可能就是下载。也就是说同一个事件发生在不同的子类对象上会产生不同的结果。

多态的作用:消除类型之间的耦合关系。
多态的实现技术称为:动态绑定(dynamic binding),是指在运行期间判断所引用对象的实际类型而不是编译期间,根据其实际的类型调用其相应的方法。

多态存在的三个必要条件:
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

Q3.重写和重载

重载(Overloading)
完全不同的方法,除了方法名称相同。
重载Overloading是一个类中多态性的一种表现。
Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

重写Overwrite
子类继承父类的方法并修改为重写。
方法名称相同,参数列表相同,返回值类型相同
重写方法的规则:
1)参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2)返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

注意静态方法不会被重写,你可以重写他,不会报错,但是他是在编译期就已经决定了的,所以即使你使用子类重写了静态方法,当使用父类调用的时候他还是执行父类方法。

Servlet

Q1. 什么是servlet

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,处理http请求和恢复,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
大多数网页传输使用http协议所以我们一般继承HttpServlet类来实现功能。

Tomcat是一个服务器容器,在Tomcat上运行servlet程序就可以提供一个web服务。


Servlet生命周期
Servlet 通过调用 init () 方法进行初始化。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 通过调用 destroy() 方法终止(结束)。

Q2. 什么是session和cookies

什么是session

为什么会出现session会话,它出现的机理是什么?我们知道,我们用浏览器打开一个网页,用到的是HTTP协议,它是无状态的,什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。但是这种无状态的的好处是快速。
举个例子比如购物车,如果我不登录的情况下网页也会创建一个临时购物车给我,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个就是session,Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。
再举个例子比如一个用户登录同一个网不同页面: 我在www.a.com/login.php里面登陆了,我在www.a.com/index.php 也希望是登陆状态,但是,这是2个不同的页面,也就是2个不同的HTTP请求,这2个HTTP请求是无状态的,也就是无关联的,所以无法单纯的在index.php中读取到它在login.php中已经登陆了!

什么是cookie

思考一下服务端如何识别特定的客户?这时就要用到cookie。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。当然如果为了隐私考虑,也可以在浏览器禁用cookie。

举例:非常常见一个场景就是我们登陆过一个网站,浏览器会询问是否要保存用户名和密码,这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的甜点省去操作。

所以cookie是运行在客户端,session是运行在服务端。

Q3. 什么是Request Dispatcher 请求调度?

JDBC

Q1. 什么是JDBC driver

什么是JDBC

Java数据库连接(java代码),(Java Database Connectivity,简称JDBC)
什么是 JDBC 驱动程序?
JDBC 驱动实现了 JDBC API 中定义的接口,该接口用于与数据库服务器进行交互。
JDBC API的实现,是由JDBC驱动程序实现的,不同的数据库对应有不同的驱动程序。需要使用某个具体的JDBC驱动,我们需要将其对应的Jar包引入到项目中。

JDBC目标是做到“一次编写,到处运行”,当你使用JDBC API 访问数据库后,无论是更换数据库还是更换操作系统,都不需要修改代码。所以使用JDBC,我们可以使用相同的API访问不同的数据库服务(比如MySQL和Oracle等),只需要修改JDBC引入的驱动程序包就可以了。

Q2. JAVA连接数据库的步骤

  1. 注册驱动程序的类
  2. 创建连接
  3. 创建声明
  4. 执行查询
  5. 关闭连接

Spring

Q1. 什么是Spring

Spring,一种用来简化企业应用级开发的一种开源框架
简化开发:它对常用的API做了封装,比如对JDBC的封装,使用Spring JDBC访问数据库,就不需要考虑如何获取连接和关闭的问题。
解耦:Spring帮我们管理软件之间的依赖关系,这样对象之间的耦合性就降低了,这样的维护性就得到了提高。
集成其它框架:方便扩展和优化其功能,例如和Mybatis的集成等。
Spring框架是按照设计模式精心打造的,这使得我们在开发环境中,能方便的使用框架,不用考虑后台是怎么进行的。
Spring容器是Spring框架中一个核心的模块,用来管理对象的创建,销毁和初始化扥操作,以及对象之间的依赖关系等。

Q2. 什么是SpringMVC

Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。
简单点的话可以将SpringMVC类比于Struts。 而他与Spring结合更好现在逐步淘汰了Struts。
Spring可以说是一个管理bean的容器,也可以说是包括很多开源项目的总称,spring mvc是其中一个开源项目,所以简单走个流程的话,http请求一到,由容器(如:tomact)解析http搞成一个request,通过映射关系(路径,方法,参数啊)被spring mvc一个分发器去找到可以处理这个请求的bean,那tomcat里面就由spring管理bean的一个池子(bean容器)里面找到,处理完了就把响应返回回去。

Q3. 什么是Hibernate

Hibernate:ORM Hibernate是一个Java ORM开发框架ORM是Object Relation Mapping的缩写,顾名思义,即对象关系映射。ORM是一种以面向对象的方式来进行数据库操作的技术。Web开发中常用的语言,都会有对应的ORM框架。而Hibernate就是Java开发中一种常用ORM框架,另一个现在流行的ORM框架是Mybatis。

油管上最火的java面试题集合相关推荐

  1. 史上最全阿里 Java 面试题总结及答案

    史上最全阿里 Java 面试题总结及答案 qq_35151346 于 2019-08-06 13:26:53 发布 33740 收藏 817 分类专栏: 面试题 文章标签: 阿里巴巴 面试题 答案 j ...

  2. java面试题:集合_Java:选择正确的集合

    java面试题:集合 这是在您的应用程序中选择Set , List或Map的正确实现的快速指南. 最好的通用或"主要"实现可能是ArrayList,LinkedHashMap和Li ...

  3. java面试题(一)java面试题集合

    JAVA面试题集 基础知识: 1.C++或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况. ...

  4. java静态方法和非静态方法的区别_史上最全阿里 Java 面试题总结

    关注[ToBeTopJavaer],回复[答案],获取全套面试题答案,为明年的金三银四,做好充分的准备. JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗 ...

  5. 史上最全的Java面试题集锦在这里,带你碾压面试官!

    一.网络原理 OSI 与 TCP/IP 各层的结构与功能,都有哪些协议 TCP 建立连接的过程,为什么要三次握手? TCP.UDP 协议的区别,各自的应用场景 打开浏览器,输入 URL 地址,访问主页 ...

  6. 阿里被转载上100W次的Java面试题教程,已助我拿下9家大厂offer

    就在前几天,我们公司的内网上突然沸腾了起来!原因竟然是因为同事们从某平台上下载到了一份58同城(Java岗)的面试题教程! 我也忍不住地看了一下,好家伙!! 转载了近乎破百万!!下载下来看了一下,转载 ...

  7. 史上最全的Java面试题

    疯狂创客圈:如果说Java是一个武林,这里的聚集一群武痴, 打磨着九阳神功和独孤九剑,欢迎砸场子 QQ群链接:疯狂创客圈QQ群 如下题目如果全部能搞定,至少涨薪50%: [第一部分] 面试要领 [第1 ...

  8. 史上最全阿里 Java 面试题总结

    JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节. String类能被继承吗,为什么. String,Stringbuffer,StringBuilder的区别. ArrayList ...

  9. java面试题汇总 java面试题集合 - 网络收集

    面试Java实习生时的一些面试题 分享到: 2011-09-26 14:42  作者:  来源:互联网  字号:T|T 摘要:还有一些针对我做过的项目问的一些问题.问了我许多问题中,大概有一半以上是回 ...

  10. 今年最新整理的《高频Java面试题集合》,聪明人已经收藏了!

    开篇介绍 个人背景: 不说太多废话,但起码要让你先对我有一个基本的了解.本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就 ...

最新文章

  1. 由粗到精学习LVI-SAM:论文原文解析
  2. Javascript自定义事件功能与用法实例分析
  3. 一些著名的软件都用什么语言编写?
  4. 解决Sublime Text3莫名的中文乱码问题
  5. 虚幻4属性系统(反射)翻译
  6. Linux 命令(37)—— free 命令
  7. 如何在线向虚拟机中安装redis单机版的详细步骤
  8. 技术晨读_20160215
  9. Code[VS]1302 小矮人
  10. ESP8266多功能点阵时钟 - PCB制作分享
  11. OpenGL编程指南学习 之一 源码环境运行
  12. 【工具使用】Modsim32软件使用详解
  13. flutter A problem occurred configuring project ‘:shared_preferences_linux‘.
  14. Bin文件夹下的DLL可以做什么?
  15. tomcat加白名单_[WebServer] Tomcat 配置访问限制:访问白名单和访问黑名单
  16. 在线流程图和思维导图开发技术详解(三)
  17. 数字证书包含哪些内容
  18. AI红包皮速领,人类现金速抽|祝大家新春快乐
  19. 3Dmax使用者快速上手Maya心得之建模
  20. 这可能是我见过最好的博客系统!(附源码)

热门文章

  1. VS2010 专业版本安装步骤
  2. 原型图APP尺寸大小
  3. 同文输入法 android,同文输入法
  4. VSCode创建Vue项目完整教程
  5. python怎么添加多行注释_python如何注释多行
  6. python中polyfit 之poly1d与polyval的含义
  7. [Linux]正则表达式和grep使用
  8. 通配符 [概述][Java]
  9. 8大数据库性能优化方案,YYDS!
  10. PLM设备维修系统技术