java基础学习(1)

1.JDK和JRE的区别
JRE:JRE是JAVA运行环境
JDK:JDK是JAVA开发工具,JDK包括JRE,java编译器、调试、分析等工具
如果只需要运行java程序,那么只需要安装JRE即可,如果需要开发JAVA程序,则需要安装JDK。

2.==和equals的区别
==:如果比较的是基本数据类型,则是比较它们的值;如果是引用类型,则是比较它们的引用是否相等
equals:比较的是它们的值是否相等

对于两个非new生成的Integer对象,进行比较时,如果两个变量值在-128到127之间则为true,否则为false;例如:

Integer it1 = 100;
Integer it2 = 100;
System.out.print(i==j); //true
Integer i= 128;
Integer j= 128;
System.out.print(i==j); //false

3.final在java中有什么作用?
修饰变量、方法和类;
修饰的变量:称之为常量,必须被初始化,初始化以后值不能修改
修饰的方法:不能被重写
修饰的类:不能被继承

4.Math.round(-1.5)等于多少?
等于-1

5.java的基本数据类型,String是基本数据类型吗?
java的基本数据类型有8种:byte、char、boolean、int、long、short、float、double。String不是基本数据类型。

6.java中操作字符串的有哪些类,它们之间有什么区别?

7.String str = "i" 和String str = new String("i") 一样吗?

8.如何将字符串反转?
使用StringBuffer(StringBuilder)的reverse方法

9.抽象类中必须要有抽象方法吗?
不一定。

10.普通类和抽象类有什么区别?

11.抽象类可以用final修饰吗?

12.抽象类和接口有什么区别?

13.java中IO流分几种?

————————————————
14.java容器有哪些?Collection和Collections有什么区别?
分为两大类 Map和Collection。Collection分为List、ArrayList、LinkedList、Set、HashSet、TreeSet等等,Map分为HashMap、TreeMap等等

15.list、set、map有什么区别?
主要区别在于数据是否有序、能否重复
list:有序、可以重复
set:无序(除了TreeSet)、不可重复
map:无序(除了TreeMap)、key值不能重复

17.如何选择使用HashMap还是TreeMap?
如果进行增、删、定位操作,使用HashMap,因为相对而言HashMap的插入会更快;如果对一个key集合进行有序遍历的话,使用TreeMap;

18.说一下HashMap的实现原理。
利用了hash算法,使用get(key)进行获取,put(key, value)进行存储,当传入key时,会使用key.hashCode()计算哈希值,根据哈希值将value保存在bucket中,如果哈希值相同,称为hash冲突,则使用链表和红黑树存储相同key值的value。

19.ArrayList 和 LinkedList 的区别是什么?

20.如何实现数组(array)和list之间的转换?
list转换为数组使用 toArray();
数组转换为list使用Arrays.asList(array);

21.Array和ArrayList的区别是什么?

22.Iterator是什么?怎么使用?(特点是更加安全)

————————————————
23.并行和并发的区别
并行:有两个处理器同时处理两个任务
并发:有一个处理器按照细分的时间片轮流处理两个任务

24.进程和线程的区别
进程是一个动态的执行过程,是系统分配资源的最小单位;线程是系统调度的最小单位;一个进程至少包含一个线程。

25.创建线程有哪几种方式?
继承Thread,重写run()方法
实现runnable接口、实现callable接口

26.线程有哪些状态?

27.sleep() 和 wait() 的区别
sleep来自Thread类、不释放锁、会自动唤醒
wait来自Object类、释放锁、使用notify/notifyAll唤醒

28.线程的start() 和 run() 有什么区别?
start()是启动线程,只能调用一次
run()是执行线程运行时的代码,可以重复调用

29.什么是线程池,创建方式?
线程池就是先创建几个线程放进一个池子里面,等到需要的时候从这个池子里调用,使用完成以后在放回这个池子,而不是销毁线程。

30.java程序中怎么保证多线程的运行安全?

31.什么是死锁?

32.怎么防止死锁?

33.synchronize 和 volatile 有什么区别?

34.synchronize 和 lock 有什么区别?
————————————————
35.什么是反射?
将类的属性和方法都封装成其他对象,提供给任意对象调用

36.什么是序列化?什么时候需要用到序列化?
————————————————
37.JSP 和 SERVLET 有什么区别?
JSP是一个和html结合的jsp文件,属于视图层;SERVLET是与html分离的java文件,属于逻辑控制层;

38.JSP有哪些内置对象(9个)?
request,response等等

39.JSP的四个作用域?
page、request、session、application

40.session 和 cookie 有什么区别?
session存储在服务器中,cookie只能存储在浏览器中
cookie可以被修改和伪造;容量和个数也有限制

41.请说一下session 的工作原理
客户端登录以后,服务器端会创建一个session并发送该session的id给客户端,客户端会将这个sessionid存储在浏览器中。当客户端向服务器端访问时,会带着这个id,此时服务器端会在内存中找到与之对应的session,这样就能正常工作了。

42.如果客服端禁止cookie使用,还能实现session吗?
可以的。可以把sessionid添加到url中就能保证session正常使用。

43.spring mvc 和 struts2 的区别

————————————————
44.throw 和 throws 的区别
throw 是声明一个真实存在的异常
throws 是声明可能出现的异常

45.final、finally、finalize的区别
final:修饰符,可以修饰变量、方法、类
finally:try{}catch{}finally{}中的一部分,表示一定要执行的代码
finaliize:垃圾回收时,被回收对象调用的Object类方法

46.在try{}catch{}finally{}中,如果catch里面有return语句,那么finally还会被执行吗?
会的,会先执行finally中的代码,然后再执行return语句

47.常见的异常类有哪些?
NullPointerException、IndexOutOfBoundsExpection、IOException、
ClassNotFoundException、NoSuchMethodException等等
————————————————
48.forward 和 redirect 的区别
forward:转发,可以共享request的数据
redirect:重定向,不能共享
forward的url地址不会改变,效率比redirect高

49.简述tcp和udp的区别
tcp:提供可靠的数据传输,面向连接的,面向字节流,传输慢
udp:不可靠的数据传输,面向非连接的,面向报文的,传输快

50.tcp为什么要三次握手,不可以是两次吗?
三次握手服务器端没有收到来自客户端的再次确认,就不会建立连接,不会浪费资源;而两次握手的话,只要服务器端发送确认报文就会建立连接,但是因为这个时候客户端没有响应服务器端的请求,服务器端会一直等待客户端,会浪费资源
————————————————
51.说一下你熟悉的设计模式
单例模式:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。

工厂模式
————————————————
52.为什么要使用Spring?
Spring是提供IOC和AOP技术的容器框架;
IOC技术能够让Spring帮你管理所有依赖对象,不需要自己去创建和管理依赖对象了;
AOP技术能够实现更方便的管理某些通用类,例如日志、异常等等;
Spring提供了事务支持,能够更方便的操作事务;
Spring能更方便的集成其他框架,例如Hibernate等等

53.解释一下什么是aop?
AOP:面向切面编程,就是把某些通用的类,比如日志、异常等,统一管理和维护,方便代码的解耦。

54.解释一下什么是ioc?
IOC:控制反转,就是把对象的创建权交给Spring,由Spring来创建和管理依赖的对象。

55.Spring 有哪些主要模块?
code,context,dao,aop,web

56.Spring 有哪些常用的注入方式?
构造函数,注解注入,setter注入

57.Spring 自动装配bean有哪些方式?
构造函数装配,byName,byType,自动装配

58.Spring 事务的实现方式有哪些?
声明式事务:XML方式、注解方式
编码式事务

59.说一下spring mvc的运行流程
60.spring mvc 有哪些组件?
————————————————
61.为什么要使用Hibernate?
Hibernate是一个ORM框架,提供数据持久化操作;
Hibernate封装了jdbc功能,简化了dao层很多重复性的代码;
实现了ORM,让dao层的编码工作更加方便,更加对象化
数据库移植性好,更换数据库只需要更改Hibernate的配置文件即可

62.什么是ORM框架?
ORM:对象关系映射,把数据库中的关系数据映射成程序中的对象

63.Hibernate有几种查询方式?
hql、sql、(条件查询)

64.Hibernate是怎么工作的?
读取和解析配置文件
读取和解析映射文件
创建SessionFactory
创建Session
创建事务
进行持久化操作
提交事务
关闭Session
关闭SessionFactory

65.get和load的区别是什么?
数据查询时,查询没有oid指定的对象,get话会返回null; load会返回一个代理对象,支持延迟加载

66.说一下Hibernate的缓存机制?
Hibernate采用session缓存,作用范围是从创建session开始直到session关闭,不需要手动打开,只能存储持久态的数据。可以通过:evict(object)清除 object 的缓存;clear()清除一级缓存中的所有缓存;flush()刷出缓存;

67.Hibernate对象有哪些状态?
瞬时态:没有id,跟session没有关联,是new出来的对象
持久态:有id,并且跟session存在关联,调用save/saveOrupdate/get/load/list 等方法的时候,对象就是持久态
游离态:有id,跟session没有关联,是session关闭以后的对象

68.在Hibernate中getCurrentSession和OpenSession有什么区别?

————————————————
69.说一下JVM的主要组成成分及其作用。
类加载器:将java代码转换成字节码
运行时数据区:将字节码文件加载到内存中
执行引擎:将字节码翻译成底层系统指令
本地库接口

70.说一下JVM运行时数据区(JVM内存机制)
线程独享:虚拟机栈,本地方法栈,程序计数器(栈存储的是基本类型数据,本地方法,对象的引用)
线程共享:堆内存,方法区(堆内存存储的是对象)(方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。)

71.说一下堆和栈的区别
堆是线程共享的,存储的是对象实例,是内存中最大的一部门
栈是线程独享的,存储的是基本类型数据、本地方法和对象的引用等等。栈是用来执行程序的

72.队列和栈是什么,有什么区别?
队列和栈都是被用来预存储数据的
队列采用的是先进先出进行检索
栈采用的是先进后出进行检索

73.说一下类加载的执行过程。(五个步骤)
加载:找到相应的class文件,然后导入
检查:检查class文件是否存在错误
准备:为静态变量分配内存空间
解析:虚拟机将常量池中的符号引用替换成直接引用
初始化:对静态变量和静态代码块执行初始化工作

74.怎么判断对象是可以被回收的?
引用计数器法
可达性分析:从GC Root开始向下搜索,搜索所经过的路径称为引用链,当一个对象到GC Root没有任何引用链相连时,就说明该对象可以被回收

75.java中有哪些引用类型?
强引用
软引用
弱引用
虚引用

76.说一下JVM有哪些垃圾回收算法?

——————————————————
77.Redis是什么?都有哪些使用场景?
78.Redis有哪些功能?
79.Redis和Memcache有什么区别?
80.什么是缓存穿透?怎么解决?
81.Redis支持的数据类型有哪些?
82.怎么保证缓存和数据库数据的一致性?
83.Redis持久化有几种方式?
84.Redis怎么实现分布式锁?
85.Redis分布式锁有什么缺陷?
86.Redis如何做到内存优化?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,928评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,032评论 3 410
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,382评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,580评论 1 304
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,558评论 6 403
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,018评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,261评论 3 432
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,328评论 0 281
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,858评论 1 328
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,843评论 3 351
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,954评论 1 358
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,565评论 5 352
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,251评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,677评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,834评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,558评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,033评论 2 368

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,394评论 0 4
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,612评论 1 114
  • 面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对象对同一消...
    Blizzard_liu阅读 1,343评论 0 6
  • java基础 集合承继包含图 Collection vs Collections 首先,"Collection" ...
    onlyHalfSoul阅读 1,331评论 0 5
  • 九种基本数据类型的大小,以及他们的封装类。(1)九种基本数据类型和封装类 (2)自动装箱和自动拆箱 什么是自动装箱...
    关玮琳linSir阅读 1,894评论 0 47