栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java面试题总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java面试题总结

Java基础 1、java中的内存泄漏是怎么回事

答:
内存泄漏是指你向系统申请分配内存进行使用,然后系统在堆内存中给这个对象申请一块内存空间,但当我们使用完了却没有归系统,导致这个不使用的对象一直占据内存单元,造成系统将不能再把它分配给需要的程序。
一次内存泄漏的危害可以忽略不记,但是内存泄漏堆积则后果很严重

2、 BlockingQueue相比普通的Queue最大的区别是什么?

答:
1.阻塞队列获取元素时,如果队列为空,则会等待队列有元素,否则就阻塞队列(普通队列返回结果,无元素)
2.阻塞队列放入元素时,如果队列满,则等待队列,直到有空位置,然后插入。(普通队列,要么直接扩容,要么直接无法插入,不阻塞)
阻塞队列的最佳场景就是生产者和消费者,使用代码时无需判断直接获取并处理(普通队列得判断有没有元素,阻塞队列不用判断,无元素自身就会阻塞,直到有东西)

Spring 1、 @Controller中,跳转(“redirect: url”)和转发(“forward: url”)有什么区别?

答:redict是重定向,是服务端发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.,原来页面和后来的页面不能用于共享数据,一般用于用户注销登录返回页面和跳转到其他网站,效率相对来说比较低,
Forward是转发,服务器请求资源,直接访问目标地址的URL,读取到那个URL的响应内容,然后把这些内容再转发给浏览器,地址栏还是原来的地址栏,转发页面和转发到的页面可以共享request里的数据,相对来说效率比较高。

2、 使用注解(如@Component)声明Bean,如何指定Bean加载顺序?

答:注册 Bean 的时候可以使用 @Order 注解来指定 Bean 的权重(或顺序)。
在使用有序集合(数组或 List)注入的时候,会根据权重来排序。
@Order 注解也可和 @Component 等注解一起使用。
@Order:指定注册同类型的 Bean 的权重(或顺序),值越小,权重越大。

3、多个同类型的Bean,使用注解注入时如何指定?

答:@Primary: 指定主要的 Bean,存在注入冲突时默认注入的 Bean
@Qualifier:指定注入 Bean 的名称

Mybatis 1、 XML映射中,SQL语句的两种参数注入方法:#和$的区别?

答:#{}将传入的数据当做一个字符串,对自动传入的数据加一个双引号。是预编译可以防止sql注入。如:order by #user_id#,如果传入的值是id,则解析成的sql为order by “id”。
${}将传入的数据直接生成在sql中,字符串替换。如:order by u s e r i d user_id useri​d,如果传入的值是id,则解析成的sql为order by id。

Redis 1. 如何使key对应的值过5秒后失效?

答:expire key 5
设置了失效时间,redis也可能存放在redis 的内存中,redis采用的是软清理的方式,通过以一定的算法进行处理。

2. scan和keys命令的区别?

答:keys用来删除相关key的时候使用,但在有数百万数据以上的时候执行很慢,而且会足协多路复用的io主线程,是以阻塞方式运行的
Scan通过游标分布进行的不会阻塞线程,

3. 如何开启和执行事务?

答:通过multi命令开启事务,通过exec命令执行事务

4. 使用管道(Pipeline)有什么好处?

答:减少服务器压力,减少链路层中的事件消耗,将大量操作结合成少量的操作。

数据库 1、请用sql语句把张三的时间更新成为当前系统时间

答:Update students set date=date(now()) where username=‘张三’;

2、表中有 A B C 三列,用 MySQL 语句实现:当 A 列大于 B 列时选择 A 列,否则选择 B 列,当B 列大于 C 列时选择 B 列否则选择 C 列。

答:
select
(case when a>b then a else b end),
(case when b>c else c end)
from table_name;

3、 如何处理大数据表分页?

答:Select * from table order by id limit 1000,10();

4、实现一个Java程序,利用Jdbc和第三方拼音库(自选)将name中的中文文本转为拼音首字母填入name_pinyin字段。(重点)

答:

(1)、对于使用maven的项目,直接添加依赖 pinyin4j这个java工具包,(官方网站:http://pinyin4j.sourceforge.net/)


com.belerweb
pinyin4j
2.5.0

(2)、我收集了现成的工具类,提供了三个基本的转化方法,亲测可以直接使用。

package oa.common.utils;
 
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 

public class PingYinUtil {
    
    public static String getPingYin(String inputString) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
 
        char[] input = inputString.trim().toCharArray();
        String output = "";
 
        try {
            for (int i = 0; i < input.length; i++) {
                if (java.lang.Character.toString(input[i]).matches("[\u4E00-\u9FA5]+")) {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
                    output += temp[0];
                } else
                    output += java.lang.Character.toString(input[i]);
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }
      
    public static String getFirstSpell(String chinese) {   
            StringBuffer pybf = new StringBuffer();   
            char[] arr = chinese.toCharArray();   
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
            for (int i = 0; i < arr.length; i++) {   
                    if (arr[i] > 128) {   
                            try {   
                                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);   
                                    if (temp != null) {   
                                            pybf.append(temp[0].charAt(0));   
                                    }   
                            } catch (BadHanyuPinyinOutputFormatCombination e) {   
                                    e.printStackTrace();   
                            }   
                    } else {   
                            pybf.append(arr[i]);   
                    }   
            }   
            return pybf.toString().replaceAll("\W", "").trim();   
    }   
      
    public static String getFullSpell(String chinese) {   
            StringBuffer pybf = new StringBuffer();   
            char[] arr = chinese.toCharArray();   
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();   
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);   
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);   
            for (int i = 0; i < arr.length; i++) {   
                    if (arr[i] > 128) {   
                            try {   
                                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);   
                            } catch (BadHanyuPinyinOutputFormatCombination e) {   
                                    e.printStackTrace();   
                            }   
                    } else {   
                            pybf.append(arr[i]);   
                    }   
            }   
            return pybf.toString();   
    }  
}  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号