![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java笔试面试
哪里都有好故事
不想进BAT的程序员不是一个好司机
展开
-
java权限访问修饰符
1.私有权限(private)private可以修饰数据成员,构造方法及方法成员,不可以修饰类。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。2.默认权限(default )类,数据成员,构造方法及方法成员等都能够使用默认权限,即不被private,protected,public修饰。默认权限即同包权限,同包权限的元素只能在定义它们的类中以及同包的类中被调用。3.受原创 2017-11-28 17:14:22 · 136 阅读 · 0 评论 -
Java并发编程:线程池的原理
为什么我们要用线程池?1.如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 假如创建一个线程消耗时间为T1,执行任务消耗时间T2,销毁线程消耗时间T3。 如果T1+T3 > T2,线程用来创建和销毁的时间大于了执行任务的...原创 2018-04-29 12:00:58 · 180 阅读 · 0 评论 -
利用Callable接口实现多线程
优点:可以获取返回值,可以抛出异常 Callable和Future接口 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务 Callable和Runnable的不同: (1)Callable规定的方法是call(),而Runnable规定的方法是run()。 (2)call()方...原创 2018-05-19 17:29:29 · 392 阅读 · 0 评论 -
synchronized实现原理
synchronized有何作用? 线程安全对于并发编程是十分重要的,造成线程安全问题的原因主要有两点: 一.存在共享数据(临界资源) 二.存在多条线程共同操作共享数据 我们需要当存在多个线程共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正...原创 2018-04-26 20:17:17 · 128 阅读 · 0 评论 -
mybatis与hibernate区别
Mybatis和Hibernate不同,Mybatis不完全是一个ORM框架,因为Mybatis需要程序员自己编写sql语句。Mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适...原创 2018-05-03 20:06:01 · 124 阅读 · 0 评论 -
HashMap底层实现原理
JDK1.6,1.7中,HashMap采用数组+链表实现,用链表处理冲突,同一hash值的链表都存储在一个链表里。当位于同一数组中的元素较多时,通过Key值依次查找的效率较低。当有大量元素都存放到同一个数组元素时,这个数组元素下有一条长长的链表,假设链表有N个元素,遍历的时间复杂度为O(n),完全失去了它的优势。 JDK1.8中,HashMap采用数组+链表+红黑树(查找时间复杂度为O(logn...原创 2018-04-25 21:29:45 · 194 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
HashMap不是线程安全的,ConcurrentHashMap引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的Hashtable,根据Key,hashCode()来决定把key放到哪个Hashtable中。 在ConcurrentHashMap中,就是把Map分为了N个Segment,put()和get()时都是根据key.hashCode()算出放到哪个Segment...原创 2018-05-09 22:27:35 · 129 阅读 · 0 评论 -
HashMap和Hashtable
HashMap与Hashtable的区别一.类继承体系 HashMap继承自抽象类AbstractMap,而Hashtable继承自抽象类Dictionary。其中Dictionary已经被放弃,HashTable比HashMap多了两个公开方法,一个是elements(),另一个是contains()。 二.Null Key 与 Null Value ...原创 2018-05-09 22:10:03 · 448 阅读 · 0 评论 -
java面试干货(转载)
本文属于转载 。。。。。。ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副...转载 2018-03-19 21:57:57 · 577 阅读 · 0 评论 -
各大公司java开发面试题总结(2)
mysql索引使用的是B+的数据结构 索引:用于提高数据访问速度的数据库对象 优点:(1)索引可以避免全表扫描 ;(2)对于非聚焦索引,有些查询甚至可以不访问数据项;(3)聚焦索引可以避免数据插入操作集中于表的最后一个数据页;(4)一些情况下,索引还可以避免排序。 虽然索引可以提高查询速度,但是他们也会导致数据库更新数据的性能下降,因为大部分数据更新时需要同时更新索引。 聚...原创 2018-03-19 21:56:35 · 239 阅读 · 0 评论 -
各大公司java开发面试题总结(1)
JVM有哪些分区? 程序计数器,java虚拟机栈,本地方法栈,堆,方法区(java栈中存放的是一个一个的栈帧,每一个栈帧对应一个被调用的方法。栈顶包括局部变量表,操作数栈,方法的返回地址,指向当前方法所属的类运行时常量池的引用,附加信息)。JVM中只有一个堆。方法区中最重要的是运行时常量池。 mysql使用的引擎 (1)Mylsam:不支持事务,适用于选择密集型,插入密集型,mysql默认的...原创 2018-03-17 16:40:14 · 652 阅读 · 0 评论 -
浅谈String,StringBuffer,StringBuilder
**三者主要的区别在于运行速度和线程安全** 一.运行速度 StringBuilder>StringBuffer>String 原因:String为字符串常量,StringBuffer和StringBuilder均为字符串变量,String一旦创建是不可更改的,而后两者对象是变量,是可以更改的。 1 .String string1=”abc”; 2 .System.转载 2018-01-28 14:34:00 · 136 阅读 · 0 评论 -
java面试题:输入一个数字,将其转化为汉字形式
参加笔试的一道题import java.util.Scanner;public class Solution { public static void convert(int num) { String[] nums = {"零","一","二","三","四","五","六","七","八",&原创 2018-06-17 19:28:43 · 5042 阅读 · 2 评论