博客
关于我
java 很全的面试
阅读量:647 次
发布时间:2019-03-14

本文共 2506 字,大约阅读时间需要 8 分钟。

Java基础

Java中的几种基本类型,各占用多少字节?

  • boolean, byte, char, short, int:占用1字节。
  • long:占用8字节。
  • float, double:占用4字节。

String能被继承吗?

不可以,因为String类带有final修饰符。final类无法被继承,防止其实现细节发生变化。


String与StringBuffer/ StringBuilder的区别

  • String: 字符串常量(不可变),通过String.valueOf或直接赋值创建。
  • StringBuilder/ StringBuffer: 字符串可变,主要区别在于线程安全(StringBuffer线程安全,而StringBuilder非线程安全)。
  • StringBuffer/ StringBuilder通常用于字符串操作,效率比String高。

ArrayList vs LinkedList

  • ArrayList: 基于数组,优点是随机访问速度快(O(1)),缺点是随机插入删除慢(O(n))。
  • LinkedList: 基于双向链表,优点是插入删除速度快(O(1)),缺点是随机访问速度慢(O(n))。

类的实例化顺序

  • 父类静态变量 ⇒ 父类静态代码块。
  • 父类非静态变量 ⇒ 父类构造函数。
  • 子类静态变量 ⇒ 子类静态代码块。
  • 子类非静态变量 ⇒ 子类构造函数。
  • 父类构造函数 ⇒ 进入子类构造函数的终结执行部分。

  • Map的实现类

    • HashMap:线程不安全,内部采用哈希表,效率高。
    • LinkedHashMap:保持插入顺序,查询速度相同。
    • TreeMap:无序,支持排序。
    • ConcurrentHashMap:线程安全,分段锁优化,适合多线程环境。

    JVM

    JVM内存结构

    • Eden(新生代):初次分配存运算的空间,通常占比20%。
    • Survivor(旧生代):存活通过次轮GC后分配的空间,占比约80%。
    • Minor GC和Major GC:新生代的垃圾回收方式。

    ####垃圾回收算法

    • Serial:标记-清除,效率低。
    • ParNew:新生代标记-清除,适合单线程和多核环境。
    • ConcurrentMark&Sweep:并发标记-清除,线程安全优越。
    • ReferenceCounting:基于引用计数,缺点是难以处理循环引用。

    内存溢出类型

    • StackOverFlowError:线程栈溢出。
    • OutOfMemoryError:JVM无法分配内存。

    反射与动态代理

    反射创建实例的三种方式

  • Object.newInstance。
  • 静态方法调用(如valueOf**)**。
  • 手动构造(如String类的构造函数)。

  • 动态代理实现方式

    • 基于Reflection(JDK代理):利用反射机制,实现由InvocationHandler管理的动态方法执行。
    • 基于ASM(Cglib代理):无反射机制,优于JDK代理效率。

    多线程

    ThreadLocal的使用

    • 作用:提供线程私有的局部变量。
    • 实现机制:存储 HashMap,键为线程本身的信息(如线程ID)。
    • 注意事项:必须在使用结束时主动移除,否则会占用内存。

    TCP/IP

    TCP三次握手的流程

  • ** SYN**:客户端发送SYN报文。
  • SYN-ACK:服务器响应ACK,并发送SYN报文。
  • ACK:客户端确认接收。

  • TCP四次挥手的含义

    • FIN(1):表示断开连接。
    • ACK(2):确认对方收到断开请求。
    • FIN(3):发送方准备断开连接。
    • ACK(4):确认完成断开。

    Map的实现类

    • HashMap和HashSet的背后逻辑是哈希表。
    • TreeMap和LinkedHashMap是基于 compareTo 进行排序。

    IP协议与网络

    常用网络参数

    • net.ipv4.tcp_syncookies:启用半连接缓存。
    • net.ipv4.tcp_max_syn_backlog:SYN队列最大长度。
    • net.ipv4.tcp_keepalive_time:延迟发送 KEEP-ALIVE消息。

    Web

    HTTP1.0 vs HTTP1.1

    • HTTP1.0:没有persistent连接,数据分块传输。
    • HTTP1.1:支持persistent连接,数据块传输。

    HTTPS加密流程

  • 客户端发起HTTPS请求。
  • 服务器发送证书。
  • 客户端验证证书并建立 TLS 推送。
  • 数据传输加密。

  • Redis

    Redis持久化方式

    • RDB:定期快照,部分数据丢失。
    • AOF:记录所有写操作,数据完整性高。

    Redis Cluster实现

    • 节点间通信:每个节点有固定的TCP端口互相通信。
    • 选举机制:周期发送ping消息,收到pong消息的节点作为Leader。
    • 数据同步:通过replication同步数据。

    Memcached适用场景

    • 高并发:用户量大,数据动态。
    • 数据稳定:不需要实时入库复杂场景。

    ##数据库

    数据库隔离级别

    • Read Uncommitted:允许脏读。
    • Read Committed:只读已提交数据。
    • Repeatable Read:支持非严格的并发控制。
    • Serializable:严格的并发控制,每次查询都获得表锁。

    SQL优化技巧

    • 执行计划:使用EXPLAIN分析查询性能。
    • 索引优化:遵循“最左前缀匹配”规则。
    • 避免全表扫描:避免在WHERE子句中使用诸如!=、>等操作符。

    拿到字符串反转函数

    public class StringReverse {    public static String reverseString(String str) {        if (str == null) {            return null;        }        return new StringBuilder(str).reverse().toString();    }}

    所有内容经过优化后,保留了核心技术点,即便有部分内容被删减或简化,默认信息无需过度扩展,仅需保持核心技术点的严谨性和连贯性。

    转载地址:http://lrblz.baihongyu.com/

    你可能感兴趣的文章
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    Python和RF编写web自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>