- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java初级工程师面试题及答案
一、Java基础语法
问题:String为什么是不可变的?实际开发中怎么避免频繁创建String对象?
答案:String底层是char[]数组(JDK9后是byte[]),且被final修饰,所以数组长度和内容都不能改。另外String的hashCode等方法会缓存结果,不可变能保证哈希值稳定,适合当HashMap的key。
避免频繁创建的话,用StringBuilder(单线程)或StringBuffer(多线程)拼接,比如循环里拼字符串时,千万别直接用“+”,会每次new新对象。
问题:int和Integer有什么区别?什么时候会自动装箱/拆箱?
答案:int是基本数据类型,存的是数值,默认值0;Integer是包装类,属于引用类型,默认值null,还能调用equals()、valueOf()这些方法。
自动装箱就是int转Integer,比如Integera=10;(底层是Integer.valueOf(10));自动拆箱是Integer转int,比如intb=a;。注意如果Integer对象是null,拆箱会抛NullPointerException,比如数据库查数值字段可能返回null,用Integer接收后直接转int就会报错。
二、面向对象
问题:Override(重写)和Overload(重载)的区别是什么?重写有哪些规则?
答案:Overload是同一个类里,方法名相同但参数列表(个数、类型、顺序)不同,返回值和权限修饰符随便;比如add(inta)和add(inta,intb)就是重载。
Override是子类重写父类的方法,方法名、参数列表、返回值(子类返回值可以是父类的子类)必须完全一样,而且子类方法的权限不能比父类小(比如父类是public,子类不能是protected),父类的final方法不能重写。
问题:讲一下你理解的单例模式?写一个线程安全的单例模式代码。
答案:单例模式就是保证一个类只有一个实例,还提供全局访问点,比如项目里的配置管理器、连接池通常用单例。
线程安全的单例常用“静态内部类”方式,代码如下:
publicclassSingleton{
//私有构造器,防止外部new
privateSingleton(){}
//静态内部类,只有被调用时才加载,实现懒加载
privatestaticclassSingletonHolder{
privatestaticfinalSingletonINSTANCE=newSingleton();
}
//全局访问方法
publicstaticSingletongetInstance(){
returnSingletonHolder.INSTANCE;
}
}
这种方式不用加锁,靠JVM类加载机制保证线程安全,还能懒加载(用到才创建实例),比“双重检查锁”简单,不容易出错。
三、集合框架
问题:ArrayList和LinkedList的区别?实际开发中怎么选?
答案:底层结构不一样:ArrayList是动态数组,靠数组扩容实现(默认初始容量10,满了按1.5倍扩);LinkedList是双向链表,每个元素存前后节点地址。
选法看场景:如果是查多改少(比如频繁get(index)),用ArrayList,因为数组查元素是O(1);如果是增删多(尤其是在列表中间增删),用LinkedList,链表增删不用移动元素,是O(1)。但要注意,LinkedList如果用get(index),会从表头或表尾开始遍历,效率很低,比如遍历LinkedList最好用迭代器,别用for循环按索引取。
问题:HashMap的key可以是null吗?HashMap和Hashtable的区别是什么?
答案:HashMap的key可以是null(只能有一个nullkey),value也可以是null;Hashtable的key和value都不能是null,否则抛NullPointerException。
其他区别:Hashtable是线程安全的(方法加了synchronized),但效率低,现在基本不用;HashMap线程不安全,但效率高,多线程环境下可以用ConcurrentHashMap替代。另外初始容量和扩容机制不同,Hash
您可能关注的文档
最近下载
- 专题22.27 待定系数法求二次函数解析式(专项练习)-2021-2022学年九年级数学上册基础知识专项讲练(人教版).docx VIP
- 元宵节英语介绍PPT.pptx VIP
- 云南省市政工程消耗量定额说明.pdf VIP
- 乡村振兴战略背景下农村生态文明建设路径研究.docx VIP
- 优衣库2025年供应链与消费者需求变化研究报告.docx
- 全过程工程咨询.pptx VIP
- 13J104 蒸压加气混凝土砌块、板材构造(OCR).pdf VIP
- 人教版八年级上册英语试卷 Unit 3单元测试卷.docx VIP
- Office高效办公知到智慧树期末考试答案题库2025年西安欧亚学院.docx VIP
- h5开发合同模板(3篇).docx VIP
文档评论(0)