广电面试题
作者:互联网
1.Java中&与&&的区别
首先,他俩都是与的逻辑运算。
其中&在程序运行时,左右两边的语句都会执行,在判断上一假则假,全真为真;
&&在程序运行时,全真则真,左边为false时,结果为false,直接结束
详细讲解及代码实现https://www.cnblogs.com/hongten/p/hongten_java_yu.html
2.Java中HashMap和HashSet、list的区别
1) HashMap是实现Map<K,V>接口的一个实体类,它对键值做了一对一的映射关系,当然里面键值不能重复。Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。
2) HashSet是实现Set接口的一个实体类,数据是以哈希表的形式存放的,里面的不能包含重复数据。Set接口是一种一个不包含重复元素的 collection。Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类:HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
然后这里总结的特别好
HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。 这里HashSet就是其实就是HashMap的一个视图。
3)List的特征是其元素以线性方式存储,集合中可以存放重复对象。
4)联系与区别
参考文章
https://blog.csdn.net/gavinli2588/article/details/78696048
自动扩展的数组,所以有了List
没有重复的数组,所以有了set
3.简述什么是数据库事务,并写出在Java中操作数据库事务的伪代码
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
1)为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
2)当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
3)事物的四大特点:
(1)atomicity(原子性)表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败。
(2)consistency(一致性)表示一个事物内有一个操作失败时,所有更改过的数据都必须回滚到修改前的状态。
(3)isolation(隔离性)事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
(4)durability(持久性)持久性事务完成之后,他对于系统的影响是永久性的
Java中操作数据库事务的实现
https://blog.csdn.net/hao_vip/article/details/79321254
4.Java和oracle中将当前时间按照如下格式输出分别怎么写,2019-04-22 13:28:30
Java实现
- package com.java; import java.text.SimpleDateFormat; import
java.util.Date; public class Test { public static void main(String[]
args) { SimpleDateFormat simpleDateFormat = new
SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String format =
simpleDateFormat.format(new Date()); System.out.println(format); }
}
oracle实现
Oracle中如何获取系统当前时间
- select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
ORACLE里获取一个时间的年、季、月、周、日的函数 select to_char(sysdate, 'yyyy' ) from
dual; --年 select to_char(sysdate, 'MM' ) from dual; --月 select
to_char(sysdate, 'dd' ) from dual; --日 select to_char(sysdate,
'Q') from dual; --季 select to_char(sysdate, 'iw') from dual; --周
//时间格式化方法 to_date('2009-12-25
14:23:31(时间)','yyyy-mm-dd,hh:mi:ss'(格式))
5.Java类、接口、抽象类区别和特点
1、一个类可以实现多个接口,但是却只能继承最多一个抽象类;
2、抽象类可以包含具体的方法,接口的所有方法都是抽象的;
3、抽象类可以声明和使用字段;接口则不能,但接口可以创静态的final常量;
4、接口的方法都是public的,抽象类的方法可以使public,private,protecte或者是默认的packag;
5、抽象类可以定义构造函数,但是接口不行。
6.JavaScript如何判断一个字符串是不是数字
第一种方法:isNaN()
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
var c="hello"; //字符串
isNaN(c); //返回一个true;
var c=10; //数字
isNaN(c);//返回一个false
如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨
第二种方法: 利用typeof的返回值
验证方法:如果返回的值为Number,则为数字;如果返回值为String或其它,则不是数字。如下所示:
var a=123;
var b='123abc';
typeof(a) //Number
typeof(b) //String
7.get post 区别,forward redirect 区别
get post 区别
最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的;
GET请求的URL传参有长度限制,而POST请求没有长度限制;
GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制;
forward redirect 区别
转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求--->web服务器接受此请求--->调用内部的一个方法在容器内部完成请求处理和转发动作--->
将目标资源 发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的
容器内的request。在客 户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是
浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求--->web服务器接受后发送302状态码响应及对应新的location给客户浏览器--->客户浏览器发现
是302响应,则自动再发送一个新的http请求,请求url是新的location地址--->服务器根据此请求寻找资源并发送给客户。在这里
location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示
的是其重定向的 路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
重定向,其实是两次request:第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到
地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
8.web乱码原因和解决办法
web tomcat:默认是ISO8859-1,不支持中文的,客户端和服务器端编码格式不一致造成的
解决办法:设置请求和响应的编码格式为utf-8
request.setCharacterEncoding("utf-8")
response.setContentType("text/html;charset=UTF-8");
10.代码实现对一个目录中的所有文件的遍历
public void traverseFolder(String path) {
string path = “xxx/xxx/xxx/xx”;
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
11.费波纳茨序列
序列 1 1 2 3 5 8 13 21 34
第n项为 A(n) = A(n-2)+ A(n-1)
x写出两种计算的程序,比较算法复杂度:
方式一:不用递归
方式二:递归调用
计算出第N个是多少
public class DiGui {
public static void main(String[] args){
//数列:1,1,2,3,5,8 ......
System.out.print( f(6) );//输出数列的第几位
}
public static int f(int n){
if( n == 1 || n == 2 )
return 1;
else
return f( n - 1 )+f( n - 2 );
}
}
12.代码实现单例模式
public class Singleton {
private static Singleton singleton = null;
private Singleton(){}
public static Singleton getSingleton() {
if(singleton == null) singleton = new Singleton();
return singleton;
}
}
13.冒泡排序
public static void bubbleSort(int []arr) {
int[] arr = {12,23,34,56,56,56,78};
for(int i =0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {//-1为了防止溢出
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
14.已知有一个学生的成绩表里的字段有编号,姓名,成绩,写出SQL语句查询最高成绩的学生
查询最高成绩select max(score) from 表名 group by score
select * from 表名 where score = (select max(score) from 表名 group by score)
标签:面试题,浏览器,请求,广电,接口,数据库,public,select 来源: https://blog.csdn.net/qq_20343841/article/details/89631076