2018/12/07去参加了一家公司的面试,做了笔试题,然后面谈。
下面将笔试题大概的内容及答案整理记录下, 方便以后自己回顾。
1.Interger与int的区别
- Integer是int的包装类,int则是Java的一种基本数据类型
- Integer变量必须实例化后才能使用,而int变量不需要
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象,而int则是直接存储数据值
- Integer的默认值是null,int的默认值是0
2.填空题
- Math.round(11.5)=12
- Math.round(-11.5)=-11
关于Math.round()方法参考链接:https://blog.youkuaiyun.com/nokia_lc/article/details/53812783
3.List,Set和Map都是实现Collection接口吗?
List和Set是,Map不是。
Collection是最基本的集合接口,声明了适用于Java集合(只包括Set和List)的通用方法。Set和List都实现了Collection接口,Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只是行为不同。(这是继承与多态思想的任何典型应用:表现不同的行为。)Set不保存重复的元素。
Map没有实现Collection接口从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。
4.验证手机号是否是正确的手机号(通过JQuery的方式)
var phone = $("#id名称").val().trim();
function validatePhone(phone){
//验证规则
var isMobile = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1})|(14[0-9]{1}))+\d{8})$/;
var isPhone = /^(?:(?:0\d{2,3})-)?(?:\d{7,8})(-(?:\d{3,}))?$/;
//如果为1开头则验证手机号码
if (mobile.substring(0, 1) == 1) {
if (!isMobile.exec(mobile) && mobile.length != 11) {
//错误提示信息
return false;
}
}
//如果为0开头则验证固定电话号码
else if (mobile.substring(0, 1) == 0) {
if (!isPhone.test(mobile)) {
//错误提示信息
return false;
}
}
//否则全部不通过
else {
//错误提示信息
return false;
}
return true;
}
参考链接:https://blog.youkuaiyun.com/xinghuo0007/article/details/71154492
5.HTTP中,get和post的区别
-
Get请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是Unicode,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包中。
因此,GET请求会暴露在URL中,而POST请求不会。 -
传输数据的大小
在HTTP规范中,没有对UR的长度和传输的数据大小进行限制。但是在实际开发过程中,对GET,特定的浏览器和服务器对URL的长度限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但实际上各个服务器会规定对POST提交数据大小进行限制,Apache,IIS都有各自的配置。 -
安全性
POST安全性比GET的高。这里的安全是指真正的安全,而不同于GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露在URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到。除此之外,GET请求提交的数据还可能造成XSS(cross-site request forgery)攻击。
总结,GET是向服务器发索取数据的一种请求,而POST是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为“GET”,实质上,GET和POST只是发送机制不同,并不是一个取一个发。
XSS攻击:https://baike.baidu.com/item/XSS攻击/954065?fr=aladdin
原文参考链接:https://www.cnblogs.com/greatluoluo/p/6260737.html
6…计算两个日期相差多少分钟?
7.字符串反转,例如:输入abc,输出cba?
- 利用StringBuffer或StringBuilder的reverse成员方法
//StringBuffer
public static String reversel (String str){
return new StringBuilder(str).reverse().toString();
}
- 利用String的toCharArray方法先将字符串转化为char类型数组,然后将各个字符进行重新拼接;
//toCharArray
public static String reverse2(String str){
char[] chars = str.toCharArray();
String reverse = "";
for(int i=chars.length-1;i >= 0;i--){
reverse += chars[i];
}
return reverse;
}
3.利用String的CharAt方法取出字符串中的各个字符
//charAt
public static String recerse3(String str){
String reverse = "";
int length = str.length();
for(int i = 0; i < length; i++){
reverse = str.charAt(i) +reverse;
}
return reverse;
}
最后补充main方法中的测试代码:
public static void main(String[] args){
String s = "abc";
System.out.println("------------------------------");
for(int i = s.length() -1; i >=0; i--){
System.out.print(s.charAt(i));
}
System.out.print(s.charAt(i));
}
System.out.println("-------------------------");
System.out.println("变换前:" + s);
System.out.println("变换后:" + reverse1(s));
System.out.println("变化后:" + reverse2(s));
System.out.println("变化后:" + reverse3(s));
8.Oracle数据库,如何查询N~M条记录
SELECT * FORM
(
SELECT 表名.*,ROWNUM AS CON FROM 表名 WHERE ROWNUM <= M AND 其它查询条件 ORDER BY 排序条件
)
WHERE CON >= N;
原文参考链接:https://www.cnblogs.com/lidabo/archive/2013/01/10/2854179.html
9
(1)计算每个人的成绩之和
SELECT SUM(score) FROM stu_score GROUP BY(name);
(2)找出每个学科的最高分的人姓名
SELECT MAX(score) FROM stu_score GROUP BY(subject);
面谈
1.Oracle数据库了解吗,了解什么程度?会Oracle数据库备份会吗?
2.在线考试系统做过什么提交或者时间的限制吗?