java 常见面试题总结(一)
1.Redis应用场景
答:分布式会话,分布式锁,计数器,缓存,消息队列,排行榜,最新列表。
2.如何访问一个类的私有方法?
答:使用反射进行访问,代码如下:
package cn.entity;
public class PrviteMhtod {
private PrviteMhtod(){ //私有构造
System.out.println("zzz");
}
private void pm(){//私有无参方法
System.out.println("我是一个私有的方法哦");
}
private void pm1(int i){//私有有参方法
System.out.println("我是猪"+i);
}
}
主代码:
@Test
public void TT1() throws Exception {
Constructor constructor=PrviteMhtod.class.getDeclaredConstructor();
constructor.setAccessible(true); //调用是否可访问的方法 true为可以, false为不可访问。
PrviteMhtod prviteMhtod = (PrviteMhtod)constructor.newInstance();//实例化PrviteMhtod类 for (Method method:PrviteMhtod.class.getDeclaredMethods()) {
method.setAccessible(true);//设置PrviteMhtod类的方法是可以访问的。如果不设置是访问不到的,
if (method.getName().equals("pm")){//获取方法名为pm的方法
method.invoke(prviteMhtod);//调用pm方法
}else if (method.getName().equals("pm1")){
method.invoke(prviteMhtod,4);//如果是有参方法,需要传入参数。
}else if (method.getName().equals("pmss")){//如果没有此方法不进入该条件。
System.out.println("aaa");
}
} }
3. 这几个对象使用==的对比结果是?
String s1="a";
String s2=new String("a");
Integer a1=12;
Integer a2=12;
Integer a3=128;
Integer a4=128;
答:s1和s2 false a1和a2 true a3和a4 false a3.equels(a4) true
@Test
public void Th() throws InterruptedException { String s1="a";
String s2=new String("a");
Integer a1=12;
Integer a2=12;
Integer a3=128;//Integer的作用范围是-128 到127,超出此范围,而是相当于new出一个新对象。
Integer a4=128;
System.out.println(s1==s2);//false
System.out.println(a1==a2);//true
System.out.println(a3==a4);//false
System.out.println(a3.equals(a4));//true
}
4. 有两张表 一张用户表 用户表有用户编号和商品编号和消费时间 一张商品表 有商品编号和商品价格


4.1 查询每个用户总共消费多少元?
答:使用分组进行查询 : SELECT SUM(price) ,uid FROM u,s WHERE u.`sid`=s.`sid` GROUP BY uid
4.2 使用sql查询消费第三多的用户?
答:使用order by进行倒序排序, 之后使用limit进行查询第三个用户即可。 :SELECT SUM(price) ,uid FROM u,s WHERE u.`sid`=s.`sid` GROUP BY uid ORDER BY SUM(price) DESC LIMIT 2,1
4.3 查询出2018年所有用户消费的平均值?
答:使用between关键字查询出2018-01-01到2018-12-31之间的数据,between关键字的作用就是查两个数值之间的数据。 :SELECT AVG(price) AS 平均消费 FROM s,u WHERE s.sid=u.sid AND u.time BETWEEN '2018-01-01' AND '2018-12-31'
5.lambda表达式的特点?
答:优点:简洁, 并行容易计算, 结合 hashmap 的 computeIfAbsent 方法,递归运算非常快。 缺点:如果不是并行计算切效率还不如传统的for循环。不容易调试,没有接触过lambda表达式的程序员不容易看懂。
6.在修改一条数据时使用索引作为判断条件和不使用索引作为条件的区别。
使用主键作为修改条件(由于我数据太少,所以加主键和使用没有索引的列的区别不是太大。)

使用无索引列作为修改条件

因为mysql索引都是以B+tree的方式存储的,所以当不使用索引作为判断条件时,数据库底层会进行全局搜素,一条一条的去查找这个条件的数据,如果数据特别多的话,性能肯定是非常慢的,
但是如果是使用索引作为判断条件数据库就会很快的查询出结果,性能也是特别快的。


7.servlet生命周期及生命周期中有哪些方法?
加载和实例化 初始化 请求服务 销毁 , 初始化时调用init()方法 请求服务时调用service()方法 销毁时调用distory()方法
8.session和cookie的区别?
cookie存储量有限而session可以存储无限量变量, cookie存储在客户端, session会话存储在服务端, cookie存储的数据相比于session安全性低, session存储的数据安全性要比cookie高。
9.关系型数据库和非关系型数据的区别?
答:关系型数据库: 数据结构固定,灵活性稍欠, sql通用,可以用于复杂查询, 支持一个表到多个表之间的非常复杂查询。都是使用表结构,格式一致, 易于维护。 读写性较差,特别是海量数据的高效率读写。
非关系型数据库:速度快, 高扩展, 成本低都是开源的, 学习成本较大, 无事务支持。复杂查询稍欠,格式灵活,存储的数据可以是 key-value ,图片, 文档形式等等。
10.String的常用方法有哪些?
答:有length方法(获取长度) equals方法(比较值) valueof方法(类型转换) trim方法(去除两端空格) toLowerCase方法(字符串转换小写) toUpeeCase方法(字符串转换大写) charAt方法(输入字符的下标获取这个字符) subString方法(截取字符之间的内容)
@Test
public void contr() throws Exception { //使用String的length方法获取一个字符串的长度
/*注:new String 和 s1="";的区别是 new String不管在String常量池中有没有这个常量都会创建一个对象,
而 s1="";如果常量池中有这个常量,则会指向这个常量,不去开辟空间,如果没有这个常量则创建出这个常量
存储位置不同 s1="";存储在方法区中, 而new String对象存储在堆中。*/
String s1=new String("4sasqw521");
System.out.println(s1.length()); //使用String的charAt方法获取某一个位置的字符
String s2="7q7as4xz1";
System.out.println(s2.charAt(2));//这个是按照下标获取字符,每个字符的下标从零开始。 //使用String的equals方法比较对象的值是否相等
String s3="aaaxxz";
String s4="aaaxxz";
//注:因为String重写了equals方法,如果没有重写equals那么和使用==比较没有区别都是比较内存地址
System.out.println(s3.equals(s4)); //使用String的length方法获取一个字符串的长度
String s5=new String("4sasqw521");
String s6=s5.substring(2);//获取按照下标方式从下标为2的字符到以后的字符。
String s7=s5.substring(3,6);//获取下标为3到下标为6之内的内容, 下标为3的打印,为6的那个字符不打印。
System.out.println(s6+"----"+s7); //字符串的大小写转换方法, toLowerCase方法(转小写)和toUpeeCase方法(转大写)。
String s8="ABcdeFg";
System.out.println(s8.toLowerCase());
System.out.println(s8.toUpperCase()); //字符串两端去空格 (只去除两端的空格。)
String s9=" sa s ";
System.out.println(s9.trim()); //类型转换为字符串
int a=12;
String s10=String.valueOf(a);
System.out.println(s10);
}

java 常见面试题总结(一)的更多相关文章
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- Java 常见面试题(一)
1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
- JAVA常见面试题问题简述(持续更新中)
JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...
- java常见面试题总结2
JAVA必背面试题和项目面试通关要点 简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等. 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链 ...
- Java常见面试题(含答案)
第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...
- java常见面试题
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分 ...
- JAVA常见面试题及解答
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- Java常见面试题总结
一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...
随机推荐
- SQL Injection-Http请求的参数中对特殊字符的处理
1.背景:最近学习webgoat到了SQL Injection的这一课,要完成这一课需要拦截Http请求,修改参数,不过在修改的参数中加入特殊字符才能完成.下面让我们一起来学习吧. 2.题目: 大致翻 ...
- GUI学习之四——QWidget控件学习总结
上一章将的QObject是PyQt里所有控件的基类,并不属于可视化的控件.这一章所讲的QWidget,是所有可视化控件的基类. QWidget包含下面几点特性 a.控件是用户界面的最小的元素 b.每个 ...
- Difference between Load / Stress / Performance Testing
Load and stress testing are subsets of performance testing. Performance testing means how best somet ...
- 初识STM32中的USMART组件
今天看了usmart那部分的模块,感觉使我们stm32的学习变更加方便,你可以通过串口查看和检验你所注册过的函数. USMART配步骤1.将USMART包添加到工程中,头文件要包括path2.添加所需 ...
- jquery学习总结1-12
一.jquery入口函数的几种写法 1.$(document).ready(function() { } ) ; 2.jquery(document).ready(function() { } ) ...
- Python的条件判断语句------if/else语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... Python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...
- 关于SQL2008R2连接服务器出错问题
在安装SQL2008R2后,在公司里用VS2013测试可以连接,可是回到寝室却出了问题,当打开SSMS连接服务器的时候会提示: “在与SQL Server建立连接时出现与网络相关的或特定于实例的错误. ...
- Linux 入门视频教程
http://v.youku.com/v_show/id_XNzM4NTU0MjQ4.html?f=28697585&o=1 1.1.1 Linux系统简介-UNIX发展历史和发行版本http ...
- android-audioRecord
android 录音功能 录音的大致流程,流程图可以在文件下载:mediarecord.vsdx 切换设备.谁去更新播放流,自动选择新的设备?流程?
- javascript小括号、中括号、大括号学习总结
作为一名编程人员,和括号打交道是必不可少的.你可知道在不同的上下文中,括号的作用是不一样的,今天就让我们简单总结下javascript小括号.中括号.大括号的用法. 总的来说,JavaScript中小 ...