根据给定的文件信息,以下是对“自己总结java笔试面试题”中几个关键知识点的深入解析: ### 1. 数组查找与填充 在数组处理中,一个常见的问题是如何检查数组中是否缺少某些元素,例如在`int[] b = new int[]{1, 98, ..., 100};`的情况下,如何找出`b`中缺失的数字。一种方法是创建一个新的长度为100的数组`a`,然后遍历`b`,将`b`中的元素值减一作为索引,在`a`中相应位置标记该元素存在。最后再遍历`a`,如果发现某个位置的值为0,则说明该位置对应的原始数组下标(即该位置的索引加一)的元素在`b`中缺失。 ### 2. 字符串构建与性能 字符串拼接是一个常见的操作,但在Java中,使用`+`进行字符串拼接会导致性能问题,因为每次拼接都会创建一个新的字符串对象。为了提高效率,可以使用`StringBuilder`或`StringBuffer`类。此外,当字符串常量在代码中被多次使用时,JVM会将其放入字符串池中,以避免重复创建相同的字符串对象,这可以通过`==`来验证两个字符串引用是否指向同一个对象。 ### 3. Unicode与字符编码 Java中,`char`类型采用Unicode编码,每个`char`占用16位(即2个字节)。这是为了支持全球范围内的字符集,包括中文、日文、韩文等多字节编码的语言。 ### 4. 日期格式化与时间差计算 使用`SimpleDateFormat`类可以方便地对日期进行格式化。在计算两个日期之间的天数差时,通常会先将日期转换为毫秒,然后计算两个毫秒值的差,并除以一天的毫秒数(1000 * 60 * 60 * 24)得到结果。需要注意的是,`SimpleDateFormat`默认是线程不安全的,如果在多线程环境中使用,应该使用线程局部变量或同步机制。 ### 5. 字符串反转 字符串反转是一个经典问题,可以使用多种方法实现,如使用数组或列表进行中间存储,再进行反向遍历拼接。在提供的示例中,首先将字符串分割成字符数组,然后从后向前遍历数组,将字符拼接到新的字符串中。值得注意的是,由于字符串在Java中是不可变的,所以每次拼接都会创建新的字符串对象。 ### 6. Hibernate框架理解 Hibernate是一个持久层框架,用于简化Java应用程序与数据库的交互。它提供了对象关系映射(ORM)功能,允许开发者将Java对象直接映射到数据库表上,无需手动编写SQL语句。通过Hibernate,可以使用面向对象的方式来操作数据库,例如通过调用`User.getName()`或`User.getId()`等方法来访问数据,而不是直接执行SQL查询。此外,Hibernate还支持延迟加载,即只有当真正需要数据时才会从数据库中加载,从而提高了应用的性能和响应速度。 ### 7. 面向对象设计原则 面向对象设计强调模块化、封装、继承和多态性。在软件开发中,应遵循以下原则: - **单一职责原则**:每个类或模块应只有一个修改的理由。 - **开放封闭原则**:软件实体应该是可扩展的但不可修改的。 - **里氏替换原则**:子类必须能够替换其基类。 - **依赖倒置原则**:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 - **接口隔离原则**:客户端不应被迫依赖它不使用的接口。 - **迪米特法则**:一个对象应当对其他对象有尽可能少的了解。 这些原则有助于创建更加灵活、可维护和可扩展的系统架构。
int[] b = new int[]{....存入98个随机的1~100的整数};
int[] a = new int[100];
for(int t : b)
a[t-1]=t;
for(int t=0; t < a.length; t++)
if(a[t]==0)
System.out.println(t+1);
============================================
1个。
编译器编译的时候就处理为"abcde"了 。
就创建了一个
String s = "a" + "b" + "c" + "d" + "e";
赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcde"
该语句在class文件中就相当于String s = "abcde"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个
==============================================
char型变量中能不能存贮一个中文汉字?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
===============================
1 将字符串解析为日期类型
用DatetimeFormater.parse就行了
2 日期差
我不知道很好的方法,唯一能做的,就是将日期通过getTime()转化为long,然后计算其差距查看复制到剪切板打印
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
long to = new Date().getTime();
long from = df.parse("20080230").getTime();
System.out.println((to - from) / (1000 * 60 * 60 * 24));
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
long to = new Date().getTime();
long from = df.parse("20080230").getTime();
System.out.println((to - from) / (1000 * 60 * 60 * 24));3 打印
=============================================
将字符串 String oldstr="I am a programmer"完全反转为"programmer a am I",
最好不用函数,自己写,当然也可以用
这样的 题目很多人写不出,真是汗啊!我是用链表实现的,但是比较繁琐,算是过关了,今天特来寻求最好的解决方案
A:
这里给出一个最简单的实现
查看复制到剪切板打印
public static void reverse() {
String s = "i am a programmer "; // 几个空格的数量分别为1,2,3,4个
String[] eg = s.split(" ", -1);
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助