Java基础复习

1.九种就本数据类型及他们的封装类
  • boolean ---> Boolean--->1/8字节(1位)
  • byte --->Byte--->1字节
  • char--->Character --->2字节
  • short ---> Short --->2字节
  • int ---> Integer ---> 4字节
  • float ---> Float ---> 4字节
  • double --->Double ---> 8字节
  • long ---> Long ---> 8字节
    ps:整数默认是int,浮点数默认是double。
2.Switch能否用String 做参数
  • java7以前不行,Java7以后可以,java7以后可放* int ,Enum,String*
3.equals 与== 的区别
  • equals初始和==一样,是比较对象的地址,但是可以覆写equals,实现自己的比较逻辑。
4.Object 有哪些公共方法:
  • equals : 比较对象是否相等
  • clone() : 拷贝(浅拷贝)
  • getClass():返回当前对象相关的Class对象
  • wait(),notify(),notifyAll():配合线程使用,进行同步。
5.java四钟引用,强弱软虚,用到的场景
  • 强引用,就是平常普通写的那种 * A a = new A() *;a为强引用,JVM不会回收有强引用的对象。
  • 软引用 SoftReference: 在内存不足时,JVM会回收 软引用,可用作缓存图片的键,可有效避免OOM。
  • 弱引用 WeakReference: 在下一次JVM垃圾回收时,会回收弱引用,WeakHashMap
    +虚引用 PhantonReference: 形同虚设,必须和引用队列配合使用,JVM 在回收一个对象时,如果发现他有虚引用,会把他加入引用队列里。程序可以通过判断队列里是否有虚引用,来判断他是否将要被垃圾回收。
6.haseCode()的作用,与equals()有什么区别

用于鉴定两个对象是否相等

  • Set:不予许重复,如果用equals()比较,set里面有1000个,就要比较1000次,但是如果用hashCode()算出对象的储存地址,如果该地址有对象,则再调用equals()比较是否相等,不相等再 存;否则就不存了。
  • List通过equals()判断是否相等。
7.ArrayList,LinkedList,Vector区别
  • ArrayList,底层基于数组,线程不安全。
  • Vector ,底层基于数组,线程安全。
  • LinkedList ,底层双向循环链表,线程不安全。
8.String ,StringBuilder,StringBuffer区别
  • String 是不可变对象
  • StringBuilder 底层是char数组,线程不安全
  • StringBuffer 底层是char数组,线程安全
9. Map、Set、List、Queue、Stack的特点与用法。
  • Map 键值对映射
  • Set 无序,不可重复
  • List ArrayList改查快,增删慢,LinkedList 增删快,查找慢。
  • Queue 先进先出
  • Stack 先进后出
10.HashMap和HashTable的区别。
  • HashMap: 线程不安全,可以用null作为键或值。
  • HashTable :线程安全,并且锁住整个表。
11. HashMap和ConcurrentHashMap的区别,HashMap的底层源码。(看源码)
  • ConcurrentHashMap 线程安全,锁的粒度小
12.TreeMap、HashMap、LindedHashMap的区别。
  • HaseMap
  • TreeMap :能够把保存的记录根据键排序,可以自己指定比较器
  • LinkedHashMap : 可以保存插入顺序,也可以指定根据使用次数排序。遍历比hashmap慢
13.Collection 包结构,与Collections的区别:
  • Collection 是接口集合
  • Collections类似一个工具类,服务于Collection框架;Collections.sort()--->Array.sort()--->mergeSort
14.Exception 与Error包结构
java异常结构.png
  • Error 也不会编译检查
15.OOM,SOF
  • OOM: 图片过大, 压缩:
    BitmapFactory.Options options = new BitmapFactory.Options();
    //开始读入图片,此时把options.inJustDecodeBounds 设回true了
    options.inJustDecodeBounds = true;
    Bitmap bitmap = BitmapFactory.decodeFile(srcPath,options);//此时返回bm为空

      options.inJustDecodeBounds = false;
      int w = options.outWidth;//图片的宽
      int h = options.outHeight;//图片的高
      //根据情况设置压缩率
      options.inSampleSize = 2;//图片宽高都为原来的二分之一,即为原图大小的1/4
      //加载压缩后的图片
      Bitmap bitmap = BitmapFactory.decodeFile(srcPath,options);
    
  • OOM :Bitmap使用后未调用recycle()。

  • OOM:构造adapter没有使用缓存contentview。

  • OOM: 内存泄露,导致Activity不能被回收。

  • OOM:缓存过大,可使用SoftReference

  • SOF(栈溢出):递归,死循环。

16. Java面向对象的三个特征与含义。
  • 封装 : 暴露接口,隐藏内部实现细节
  • 继承 : 代码复用
java中的访问修饰符.png
  • 多态: 更加灵活,父类引用子。
17.Override和Overload的含义去区别。
  • Override :重写。方法特征相同。子类在覆盖父类带throws子句的方法时,子类的方法声明中的throws子句抛出的异常不能超出父类方法的异常范围。重写的返回值可以是父类及其子类。
    ps:Java语言规范里,一个方法的特征仅包括方法的名字、参数的数目和种类,而不包括返回类型、参数的名字以及抛出的异常。
    +Overload :重载, 函数名相同,参数列表不同;
18. Interface与abstract类的区别。
  • Interface :不能有方法实现,方法默认修饰符 public abstract,变量默认修饰public static final。
  • abstract 类:不能实例化,可以拥有abstract方法,其他的与普通的class没区别。
19. Static class 与non static class的区别。
  • 静态内部类不需要持有外部类的引用,非静态内部类需要持有外部类的引用。
20. java多态的实现原理。
  • 程序在运行期动态绑定,在运行期间,根据具体实例化的对象找到方法区中此对象的方法表,再找到方法表中的被调用方法,最后通过直接地址找到字节码所在的内存空间。
21.线程同步的方法:sychronized、lock、reentrantLock等。
22. 锁的等级:方法锁、对象锁、类锁。
23.实现多线程的两种方法:Thread与Runable。
24.写出生产者消费者模式。
25.ThreadLocal设计理念与作用。
  • 防止任务在共享资源上产生冲突的第二种方法就是根除对变量的共享,于是有了线程本地化存储。
26.ThreadPool用法与优势。 ExecutorService exec = Executors.newCachedThreadPool();
  • newCachedThreadPool():数量不固定,可复用,不够了就创建新的线程。
  • newFixedThreadPool():固定线程数,任务超过线程数,会在队列中等待
  • newSingleThreadExecutor:就一个线程的线城池
  • newScheduledThreadPool:类似Timer。支持周期性工作。
    public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
    0L, TimeUnit.MILLISECONDS,
    new LinkedBlockingQueue<Runnable>());
    }
27.Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等
  • ArrayBlockingQueue
  • LinkedeBlockingQueue
  • PriorityBlockingQueue
  • CopyOnWriteArrayList
  • DelayQueue
  • CountDownLatch
  • CyclicBarrier
28.wait()和sleep()的区别
  • wait()来自Object,sleep()来自Thread
  • wait()会让出锁,sleep()不会;即wait()会让出CPU,sleep()不会。
29. foreach与正常for循环效率对比。
  • foreach 语法糖,内部是迭代器遍历,因此较for稍慢一点
30.java NIO:
  • NIO的目的在于提高速度,速度的提高来源于所使用的结构更接近于操作系统执行I/O的方式:* 通道和缓冲器 *

    • 通道 是数据,唯一与通道打交道的是 缓冲器 ,我们通过 缓冲器 *从通道读取数据,或者向通道写入数据。
      FileChannel fc = new FileOutputStream("data.txt").getChannel();
      fc.write(ByteBuffer.wrap("some text".getBytes()));
      fc.close();

      //read
      fc = new FileInputStream("data.text").getChannel();
      ByteBuffer buff = ByteBuffer.allocate(BSIZE);//分配BSIZE大小的缓冲区
      fc.read(buff);
      buff.flip();//告诉缓冲器,别人要来读取了,做好准备
      //输出时必须编码
      String encoding = System.getProperty("file.encoding);
      System.out.print(Charest.forName(encoding).decode(buff));
      
  •  buffer.mark(); 配合buffer.reset();回到mark()位置
      buffer.rewind();回到起始位置
      buffer.asCharBuffer() ---> CharBuffer;
      //其他的int啥的类似
    
  •  MappedByteBuffer = new  RandomAccessFile("text.txt","rw").
    

getChannel().map(FileChannel.MapMode.READ_WRITE,0,length);
大文件映射。

31. 反射的作用与原理。
  • 反射:在运行期间动态生成对象并调用方法,提供了动态性
  • 写框架,写接口
32. 泛型常用特点,List<String>能否转为List<Object>
  • 不能
33.解析XML的几种方式的原理与特点:DOM、SAX、PULL。
  • DOM :先把xml文档都读到内存中,占内存
  • SAX:基于事件驱动,顺序扫描,每个地方都有对应的函数处理
  • PULL:与SAX类似,可以通过next()方法获取他的下一个解析事件,也可以调用getAttributte()方法来获取属性的值,也可调用它的nextText()获取本节点的值。
34. Java与C++对比。
  • Java:不用自己管理内存,跑在虚拟机上,平台无关。
  • C++ : 速度快
35.java1.8新特性
  • Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可。

     interfece IA{
       default int a(){return 1;}
       }     
    
  • 引入Lambda表达式

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

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,137评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,504评论 18 399
  • 当当当当,最最受人期待日本Qulle团队成员、知名舞见鼻血姬和電气少女孽今天来到漫展现场啦! 虽然小编没有亲眼...
    安静的静静阅读 292评论 0 0
  • 基本概念 Dom事件级别 Dom事件模型 Dom事件流 描述Dom事件捕获的具体流程 Event对象的常见应用 自...
    cAce阅读 173评论 0 0
  • 材料:排骨、海带结、白萝卜、姜、葱、料酒、盐、胡椒粉 1.海带泡发洗净 2.白萝卜去皮切条状备用 3.排骨放入沸水...
    大娟儿啦啦阅读 371评论 0 0