【面试问题】java小厂

  1. Java基本数据类型和自动拆箱

    Java有8种基本数据类型:byte、short、int、long、float、double、char、boolean。自动拆箱是JDK5开始的功能,比如Integer对象自动转成int,省去了手动调用intValue()的麻烦。

    自动装箱在需要包装类型但传入基本类型时发生,比如:

    把基本类型赋值给包装类型变量:Integer i = 10;

    往集合里添加基本类型:list.add(100);

    方法参数是包装类型,传入基本类型。

    自动拆箱在需要基本类型但传入包装类型时发生,比如:

    包装类型赋值给基本类型变量:int j = new Integer(20);

    算术运算:Integer a = 10; int b = a + 5;

    比较运算:Integer c = 10; if (c == 5) {...}

    方法参数是基本类型,传入包装类型。

    注意:包装类型为null时拆箱会抛NullPointerException。

  2. 重载和重写的区别

    重载是在同一个类里方法名相同但参数列表不同,跟返回值无关;重写是子类重新定义父类的方法,方法签名必须一致。重载可以改变返回值类型,但光改返回值不行,还得改参数列表。

  3. 创建线程的方式

    常见的有四种:继承Thread类、实现Runnable接口、实现Callable接口(配合FutureTask)、用线程池。我一般用Runnable,因为Java单继承,实现接口更灵活,而且方便多个线程共享同一个任务。

  4. Java集合框架的基本接口

    最顶层是Collection和Map。Collection下面有List、Set、Queue这些子接口,Map独立一套,像HashMap、TreeMap都实现它。

  5. 单例模式

    单例就是保证一个类只有一个实例,比如饿汉式:private static final实例,构造私有,提供get方法。或者懒汉式:双重检查锁,注意用volatile防止指令重排。写冒泡排序的话就是两层循环,相邻比较交换。

  6. 线程同步和通讯

    同步可以用synchronized关键字或Lock(比如ReentrantLock),还有volatile保证可见性。线程通讯用wait/notify/notifyAll,或者用Condition配合Lock,也可以用阻塞队列来协调。

  7. 子类覆盖父类方法处理异常

    子类重写方法不能抛出比父类更宽泛的异常,可以抛出相同异常、子类异常或者不抛。如果父类没抛受检异常,子类也不能抛,但可以抛运行时异常。

  8. MyBatis中#和$的区别

    #{}是预编译,会用占位符?,安全防SQL注入。${}是直接字符串替换,有注入风险,一般用在动态表名、列名这种地方。

  9. Spring依赖注入及方式

    依赖注入就是把对象间的依赖交给Spring容器管理,不用自己new。常见方式有三种:构造器注入、setter注入、字段注入(用@Autowired)。

  10. Spring Boot核心注解和配置文件

    核心注解是@SpringBootApplication,它组合了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。配置文件支持两种格式:.properties和.yml(或.yaml)。

  11. 优秀代码和编程习惯

    我认为优秀代码要可读性好、容易维护、性能不错、健壮。我个人习惯:命名清晰规范,关键地方写注释,尽量用设计模式,写单元测试,避免重复代码,时不时重构优化。

    大家可以关注我,后续会每天更新大厂中小厂的面试问题。感谢你的阅读

相关推荐
echome88818 小时前
JavaScript Promise 与 async/await 实战:5 个高频异步编程场景的优雅解决方案
开发语言·javascript·ecmascript
立莹Sir18 小时前
Spring Bean生命周期设计思想与源码深度剖析:从表象到本质的全面升级
java·spring·rpc
计算机毕业论文辅导18 小时前
毕业设计避坑指南:工资信息管理系统的设计与实现(Java+SpringBoot实战)
java·spring boot·课程设计
你不是我我18 小时前
【Java 开发日记】为什么要有 time _wait 状态,服务端这个状态过多是什么原因?
java·网络·php
User_芊芊君子18 小时前
别再乱用 ArrayList 了!这 4 个隐藏坑,90% 的 Java 开发者都踩过
android·java·数据库
xcLeigh18 小时前
JAVA项目实战:用飞算 JavaAI 高效开发电商系统核心功能模块
java·ai编程·电商系统·java开发·飞算javaai炫技赛
xcLeigh18 小时前
IoTDB Java 原生 API 实战:SessionPool 从入门到精通
java·开发语言·数据库·api·iotdb·sessionpool
qq12_81151751518 小时前
Java Web 影城会员管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
java·前端·mybatis
杜子不疼.18 小时前
Java 智能体学习避坑指南:3 个常见误区,新手千万别踩,高效少走弯路
java·开发语言·人工智能·学习
冬天vs不冷18 小时前
为什么 Java 不让 Lambda 和匿名内部类修改外部变量?final 与等效 final 的真正意义
android·java·开发语言