• java常见面试基础题2


    1、BIO、NIO和AIO之间的区别
    BIO即同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。
    NIO即同步非阻塞,一个线程不断的轮询买个输入输出的状态改变,如果有状态发生了改变,则进行下一步的操作。
    AIO即异步非阻塞I/O模型,无需一个线程去轮询所有的IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。

    2、深浅克隆的区别

    1,浅克隆中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的
    成员对象并没有复制。
    2,深克隆中,除了对象本身被复制外,对象所包含的所有成员变量也将复制


    3、什么是序列化,如何实现Java序列化
    Java序列化就是将一个对象转化为一个二进制表示的字节数组,通过保存或则转移这些二进制数组达到持久化的目的。
    要实现序列化,需要实现java.io.Serializable接口

    4、编码实现一个任意文件夹的拷贝

    5.统计一个文件calcCharNum.txt中各个字符出现次数:A(8),B(16),C(10)...,a(12),b(10),c(3)....,括号内代表字符出现次数,要求按照出现次数从小到达排序输出。如果是回车符则按照空格符处理。

    面向对象写法

    App类

    1. package com.zjh1;
    2. import java.io.FileReader;
    3. import java.io.Reader;
    4. public class App {
    5. public static void main(String[] args)throws Exception {
    6. ArrayList list=new ArrayList();
    7. try(Reader r=new FileReader("data/calcCharNum.txt")){
    8. int kk=-1;
    9. while(true){
    10. kk=r.read();
    11. if(kk==-1)
    12. break;
    13. if(kk=='\r'||kk=='\n'||kk=='\t')
    14. kk=' ';
    15. list.add((char)kk);
    16. }
    17. list.sort();
    18. list.show();
    19. }
    20. }
    21. }

    ArrayList类

    1. package com.zjh1;
    2. public class ArrayList {
    3. private CharNum[] arr;
    4. private int count;
    5. public ArrayList() {
    6. this(10);
    7. }
    8. public ArrayList(int length) {
    9. arr = new CharNum[length];
    10. }
    11. public void show() {
    12. for(int i=0;i
    13. System.out.print(arr[i]+",");
    14. }
    15. }
    16. public void sort() {
    17. for(int i=1;i
    18. for(int k=0;k
    19. if(arr[k].big(arr[k+1])) {
    20. CharNum tmp=arr[k];
    21. arr[k]=arr[k+1];
    22. arr[k+1]=tmp;
    23. }
    24. }
    25. }
    26. }
    27. public void add(char ch) {
    28. int exists=indexOf(ch);
    29. if(exists>=0) {
    30. arr[exists].addNum();
    31. }else {
    32. arr[count++]=new CharNum(ch);
    33. if(count>=arr.length)
    34. resize();
    35. }
    36. }
    37. private void resize() {
    38. CharNum[] res=new CharNum[arr.length*3/2];
    39. for(int i=0;i
    40. res[i]=arr[i];
    41. this.arr=res;
    42. }
    43. private int indexOf(char ch) {
    44. int pos=-1;
    45. for(int i=0;i
    46. CharNum cn=arr[i];
    47. if(cn.getCh()==ch) {
    48. pos=i;
    49. break;
    50. }
    51. }
    52. return pos;
    53. }
    54. }

    CharNum类

    1. package com.zjh1;
    2. public class CharNum {
    3. private char ch;
    4. private int num;
    5. public CharNum(char ch) {
    6. this.ch=ch;
    7. this.num=1;
    8. }
    9. @Override
    10. public String toString() {
    11. return ch+"("+num+")";
    12. }
    13. public char getCh() {
    14. return ch;
    15. }
    16. public void addNum() {
    17. this.num++;
    18. }
    19. public boolean big(CharNum charNum) {
    20. boolean res=false;
    21. if(this.num>charNum.num)
    22. res=true;
    23. else if(this.num==charNum.num) {
    24. res=this.ch>charNum.ch;
    25. }
    26. return res;
    27. }
    28. }

  • 相关阅读:
    GEE中核函数在不同缩放级别下的区别
    MCAL系列介绍04-GPT
    Android ThreadLocal
    全网最牛,Pytest自动化测试框架-Fixture测试夹具详解(撸码实例)
    兼容cc1101/cmt2300-DP4301 SUB-1G 无线收发芯片
    DVWA(一)
    HTML&CSS3
    ATC‘22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时
    中国香港学生IB高分是如何做到的?
    H2数据库端口占用
  • 原文地址:https://blog.csdn.net/zjh0101/article/details/126256256