1. HashSet是如何保证数据不重复的;

  首先,HashSet添加元素的时候,底层是通过HashMap的put方法来实现的,而添加的元素,则是保存在了hashMap的key里,因为HashMap的key不会重复,所以hashset添加的元素也不会重复。而HashMap的put方法的底层是通过hashcode和equals方法来实现防止重复的;首先会判断该数据的hashCode是否已经存在,如果不存在,说明集合里没有该数据,保存进去;如果存在相同的hashcode,再调用equals方法判断数据,如果还是相等,说明该对象已经存在,不再添加;

  因为两个对象的hashcode不同,则两个对象一定不同,而如果hashCode相同,那这两个对象不一定相同,所以再用equals来判断一下即可;

2. ArrayList和数组有什么区别;

  首先,数组的大小是固定的,我们在使用数组的时候,必须要给出固定的大小。而ArrayList我们不用给定大小就可以使用。但实际上,ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

  所以,ArrayList底层是通过数组来实现的,可以说是ArrayList是一个动态扩容的数组;而也正是动态扩容,让我们使用ArrayList的时候不用过多关注ArrayList的大小,同样,动态扩容,也是ArrayList效率方面的一个问题;

3. SQL事务的4个特性;

  SQL事务的4个特性(ACID):原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability);

  a. 原子性是说事务中包含的各个操作要么全部执行,要么全部不执行,不存在只执行了中间某个操作这种情况。即类似于运算符中的boolean,要么true,要么false;

  b. 一致性是说在事务执行前后,数据的状态必须是从一个一致性状态到另一个一致性状态。比如银行转账,两个账户相互转账,第一个账户有50元,第二个账户有50元,两个账户的总和是100元。这是一个一致性的状态,第一个账户给第二个账户转账20元,此时,第一个账户还有30元,第二个账户有70元,两个账户的总和还是100元,这是另一个一致性的状态。如果转来转去,转失败或其他情况,最终两个账户的总和不是100,那这就不是一个一致性的状态。或者通俗的来讲,数据库插入一个数据A, 写进去后这个数据还是A,不会变成B,这就是一致性;

  c. 隔离性是说一个事务的执行不能影响到其他事务,或者一个事务的执行不能被其他事务所影响,两个事务之间的操作不会相互影响,即不会发生脏读、不可重复读和幻读。隔离性的具体内容可以参考数据库的隔离级别。比如,一个更新事务更新一条数据时,另一个数据读取了还没提交的更新数据,造成脏读。例如事务A 增加数据,事务B删除数据, 互相不影响,就是相互隔离开来。如果事务A删除数据,事务B也删除该数据,则事务的隔离性将通过串行化的方式,使得同一时间只能有一个请求用于执行删除A数据的操作。

  d. 持久性是说事务一旦提交,那么它对数据库的修改就应该是永久的,不会被回滚。即是插入数据库的数据写到了磁盘,就是永久了。

4. Spring用来做什么?

  Spring 框架目标是简化Java企业级应用开发,降低对象之间的耦合关系。将原先我们自己手动控制的对象间的关系交由框架来管理。简单的说就是简化开发,降低耦合;

5. Dubbo和zookeeper是用来做什么?

  首先,dubbo是一个RPC(Remote Procedure Call 远程过程调用)框架,说白了就是个远程服务调用的分布式框架,如果没有分布式的需求,是不需要RPC的。比如两台服务器A,B,一个应用部署在A服务器上,一个部署在B服务器上,如果A服务器需要调用B服务器上的方法,由于不在同一个内存空间,不能直接调用,RPC就是为了解决这个问题的;

  dubbo中的zookeeper,由于dubbo是基于消费者和服务者模式的框架,所以zookeeper是充当一个注册中心的存在,服务注册到zookeeper上,然后由消费者去调用。

6. Mysql的左连接和右连接有什么区别?

  首先,左连接是说,两张或两张以上的表进行关联查询,最终查询出的数据的条数和左表是一致的,即以左表为基准,到右表找匹配的数据,找不到匹配的用NULL补齐;
而右连接恰好相反;

7. 并发(concurrency) 和 并行(parallellism)的区别?

  并行是指两个或多个事件在同一时刻发生,而并发是指两个或多个事件在同一时间间隔发生;
  或者说,并发是在在一台处理器上“同时”处理多个任务,在并行是在多台处理器上同时处理多个任务;
  因为并行是基于多处理器的,所以说在单核CPU系统上,只可能存在并发而不可能存在并行;
  其实,并发是时间段内有很多的线程在执行,但任何时间点上都只有一个在执行,多个线程轮询CPU的时间片执行,或者说CPU在不同的线程之间切换,每个线程只准运行一小段时间。只不过这个时间特别短,短到我们察觉不到它们断断续续的执行,所以我们就感觉好像是在同时运行多个线程。那么在这里线程切换的意义主要就是提升交互体验。(下图转载自github)


http://ifeve.com/parallel_and_con/
https://www.zhihu.com/question/33515481
http://ask.csdn.net/questions/193424

【Java基础】一些问题的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. HDOJ.2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)

    悼念512汶川大地震遇难同胞--老人是真饿了 点我挑战题目 题目分析 每组数据给出所拥有的钱数,和大米的种类.每种大米给出单价(每单位重量)和大米的重量.求能买到的大米最大重量是多少? 采用贪心算法. ...

  2. ContestHunter暑假欢乐赛 SRM 05

    T1 组合数,求一下乘法逆元就行了 没取模 没1LL* 爆零了 T2 让最大子段和最小就行,跑最大子段和的时候若超过S就弹出堆中最大的数,每次有负数加进来不断弹出最小的数相加重新加进堆直到为正数,因为 ...

  3. 【learning】杜教筛求欧拉函数前缀和

    我们考虑利用\(\sum\limits_{d|n}\varphi(d)=n\)这一性质来处理这个问题 设\(f(n)=\sum\limits_{i=1}^{n}\varphi(i)\) 那么我们可以得 ...

  4. 【单调队列】【P1714】 切蛋糕

    传送门 Description 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸 ...

  5. STL之三:deque用法详解

    转载于:http://blog.csdn.net/longshengguoji/article/details/8519812 deque函数: deque容器为一个给定类型的元素进行线性处理,像向量 ...

  6. ZOJ1586:QS Network (最小生成树)

    QS Network 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 Description: In th ...

  7. Mybatis中传入List条件

    传入一个map的参数,map里有一个tenantIds的List,在xml里先判断这个List的size是否大于o,然后通过foreach 构造一个in后面括号里的元素,具体的xml如下: <i ...

  8. 在linux下创建软链接(即目录映射)

    在linux中创建软链接,使用命令:ln -s. 语法:ln -s 源文件 目标文件.

  9. LightOJ 1151 - Snakes and Ladders 高斯消元+概率DP

    首先来个期望的论文,讲的非常好,里面也提到了使用线性方程组求解,尤其适用于有向图的期望问题. 算法合集之<浅析竞赛中一类数学期望问题的解决方法> http://www.lightoj.co ...

  10. 【usaco-Liars and Truth Tellers, 2013 Jan真假奶牛】并查集

    题解: 原先我看错题了,以为是任意选择k个使得它们不矛盾. 这样的话怎么做呢?我想M^2判断,把它们分成若干个集合,集合里面两两不矛盾这个集合里所有的话就不矛盾了. 但是这样是错的.为什么呢? 每一句 ...