面试汇总-持续更新中

部分内容直接来源于网络,由于时间关系未注明出处,如有侵权可联系删除相关内容

壹.数据库

1.数据库定义字段用varchar但不清楚char(10)和varchar(10)的结果区别

①首先明确的是,char的长度是不可变的,而varchar的长度是可变的,

②定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,

③char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

④char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

扩展资料:char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。

2.数据库中有三条相同字段,如何取出其中一条数据。

3.数据库中主键可不可为空,mysql可以有但是不能存在两个都为空值。

贰.spring:

①springioc底层创建对象实例:

现在有两个类,UserService和UserServlet,我现在要在UserServlet中得到UserService的对象,原始的方法通过new创建一个UserService对象,我们现在用Spring可以这么来做,

第一步:创建一个xml配置文件,配置要创建的对象类,<bean id="userService" class="com.UserService">

第二步:创建工厂类,使用dom4j解析配置文件+反射

工厂类有个返回userService的方法,这个方法中

1 使用dom4j解析xml文件,根据id值userService得到id值对象class属性值,也就是类的属性

2 使用反射创建类对象

Class clazz=Class.forName(classValue);

UserService service=clazz.newInstance();

return service;

这时在userServlet中调用userService的方法就是UaserFactory.getService();这样你的userService改变的话就只需要在配置文件中修改就可以了,降低了类的耦合度。

②spring常用注解

③spring自动装配原理

④如何对有相同字段的实体类对象进行排序

叁。Java基础

①字符串与list之间的转化

// 将逗号分隔的字符串转换为List
String str = "a,b,c";
// 1.使用JDK,逗号分隔的字符串-->数组-->list
List<String> result = Arrays.asList(str.split(","));
// 2.使用Apache Commons的StringUtils
List<String> result1 = Arrays.asList(StringUtils.split(str, ","));
// 3.通过遍历
String[] strings = str.split(",");
List<String> result2 = new ArrayList<String>();
for (String string : strings) {
    result2.add(string);
}

// 将List转换为逗号分隔的字符串
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
// 1.使用Apache Commons的StringUtils
String str1 = StringUtils.join(list.toArray(), ",");
// 2.通过遍历
StringBuffer str2 = new StringBuffer();
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
    String string = (String) iterator.next();
    str2.append(string);
    if(iterator.hasNext()){
        str2.append(","); 
    }
}

Apache Commons的StringUtils下载: http://download.csdn.net/download/xc_oo0/9988044 
Lang – Download Apache Commons Lang

② Iterator 和 ListIterator 有什么区别?  Iterator 可以遍历 Set 和 List 集合,而 ListIterator 只能遍历 List。  Iterator 只能单向遍历,而 ListIterator 可以双向遍历(向前/后遍历)。  ListIterator 从 Iterator 接口继承,然后添加了一些额外的功能,比如添 加一个元素、替换一个元素、获取前面或后面元素的索引位置。

③Java中值传递类型:

请访问(10条消息) JAVA参数传递方式 (按值传递与引用传递区别)_nO0b-CSDN博客_java参数传递方式

④接口与抽象类的区别,你清楚的话什么时候使用抽象类什么时候使用接口合适呢?

⑤string、stringbuffer、stringbuilder三者区别、底层呢?

⑥io分类

⑦说一说hashmap底层是如何进行比较的,在开发过程中的使用

⑧说说你常见的异常种类

肆.虚拟机

①虚拟机内存模型

②虚拟机垃圾回收机制

③如何创造一个内存溢出

伍.LINUX篇

①说说你常见的命令

②如何查看服务内存

③如何修改文件夹权限属性

陆.redis篇

①常用命令有哪些,Java中调用的常用命令有哪些

②数据类型有几种

③如何设置一个队列

柒.MQ篇

捌.nacos篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值