首先,2-3分钟介绍一下你自己。
(1)JAVA中你经常用到那些类?
问这个问题的时候,我就迷茫了,不知道到底在问些什么,就说了几个最近项目中用到的类,加密类,Socket类。然后面试官提醒我说,MAP类用过么?然后我就想起来,接着说,常用的类还有MAP、HashMap、Collection、Set、list、ArrayList等。
(2)MAP、HashMap是如何操作的?
我就说是通过put.(key,value);进行操作的。
然后接着问了一个问题:HashMap中的key可以重复么?
我回答:不可以。接着问:如果重复了,HashMap是如何解决的?
我回答:如果key相同的话,现在put进去的值,会覆盖原来key中对应的值。
(3)list、ArrayList是如何操作的?
我回答:是通过add(value)进行操作的。
接着问:ArryList中存储的值可以重复么?
我回答:不可以。(这个回答错了)。正解:ArrayList中存储的值可以重复。ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。
(4)JAVA中string转换成int类型,如何操作?
我回答:通过Integer.parseInt();
虽然回答正确了,但是感觉自己还是没有发挥好,这个问题。
第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象
(5)JAVA中int转换成String类型如何操作?
我的回答:s=i+"";。这道题虽然也是回答正确了,但是还是感觉自己没有回答完整。
第一种方法:s=i+""; //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象
(6)如何获得字符串的长度?
我回答:string.length。
接着问:length后边要不要()??
我回答: 不要。这个细节,平时没注意。回答错了。正确答案:
String str="WO de Blog";
System.out.println(str.length());
接着问:字符串如何获得子串??
我回答:通过subSequence()。这个其实也对,就是不常用。感觉面试官想让我说subString()。哎。。。当时没有想起来这个方法。下面我就补充学习一下了:
String str="WO de Blog";
String subStr=str.substring(2);//从第二个字符截取,直到最后。
String subStr1=str.substring(2, 5);//从第二个字符,截取到第五个字符。
String subStr2=str.subSequence(2, 5).toString();//从第二个字符,截取到第五个字符。返回的是CharSequence,需要toString()
System.out.println(subStr);
System.out.println(subStr1);
System.out.println(subStr2);
结果:
de Blog
de
de
接着问:如何分割字符串?
我回答:split()。
接着问:里面参数是什么?
我回答:需要分割的标识符。
(7)数组、和集合如何得到长度?
我回答:数组是通过length得到。
接着问:这个length后边有()么??
我回答:没有。这个是瞎蒙对了。真正答案:
int[] a={1,2,3,4,5};
System.out.println(a.length);
接着问:list如何得到长度??
我回答:size()。
正确答案:
ArrayList arrayList=new ArrayList<>();
arrayList.size();
(8)说一下if和else的结构?
我回答:
if(判断条件){
//执行代码块
}else{
//执行代码块
}
然后面试官,直接写了一个完整的if、else结构让我判断:
if(true){
//代码块A
}else if(false) {
//代码块B
}else if(true){
//代码块C
}else {
//代码块D
}
程序会执行哪一个代码块?
我回答:A。这个问题也回答正确了。
(9)说一下for循环的结构?
我回答:for(int i=0;i<5;i++){ }
到这里,面试官给我挖了一个坑,他说,for(int i=0,i<5,i++){ }你确定???
我当时没有多想,直接说确定。这真是一个大坑。面试完的时候,直接把这个问题给我指出来了。
接着问:程序如何跳出for循环??
我回答:continue是跳过本次循环。break是跳过这个for循环体。
接着问:程序是如何结束函数体的?
我回答: return。
(10)JAVA中如何实现线程??
我回答:两种方法:(1)继承Runable接口。(2)实现Thread类。
----------------------------------------------------------------------下面时数据库的东西-------------------------------------------------
接下来,问到了数据库的东西,心里有点慌,好久没看数据库的东西了,心虚。
(11)数据库是如何查询一条数据的??
我回答:select * from 表名;后面还可以有一些条件where..... order by...... group by.......
接着问:如何筛选重复的数据??
我回答:有一个关键字,记不清楚了,好像是distinct。
现在,翻了一下,以前的课本,Distinct短语,表示:在查询是不显示重复的数值。SELECT DISTINCT ID,COL1,COL2 FROM TABLE
接着问:两个表如何做连接查询??
这个问题,真的忘了,我也不记得当时扯了点啥。好尴尬啊......这个问题隐隐约约面试官给了我好多提示啊!
面试官提示:两个表连接查询条件是什么??
我回答:两个表有相同的属性。
最后还是坑坑挖挖的回答正确了。没看书,去面试,感觉好难啊!
补充:数据库中连接查询:
(1)等值与非等值连接查询:
连接查询的Where子句中用来连接两个表的条件称为连接条件或者连接谓词。
当连接运算符为=时,称为等值连接。使用其他运算符称为非等值连接。
例子:学生情况存放在Student表中,学生选课情况存放在SC表中,所以本查询实际上涉及Student与SC两个表。这两个表之间的联系是通过公共属性Sno实现的。
Select Student.*,SC.*
from Student,SC
WHERE Student.Sno=SC.Sno; /*将Student与SC中同一个学生的元组连接起来*/
若在等值连接中把目标列中重复的属性列去掉则为自然连接。
(2)自身连接
连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。
(3)外连接
(4)复合条件连接
(12)如何进行数据的插入操作?
我的回答:insert 表名 into(值)。这个回答错了。
正确答案:
insert
into 表名(属性列1,属性列2,属性列3)
values(值1,值2,值3)
(13)如何更新和修改数据?
我的回答:update on 表名。这个回答错的太离谱了。哎。。。面试之前,真的得好好看看书呢!
正确答案:
update 表名
set 列名=值
where 条件
(14)如何删除数据??
我的回答:delete 表名。删除的是整个表的数据,但是数据库中,这个表还存在,只是数据没有了。
接着问:如何删除符合某个条件的数据??
我的回答:delete 表名 where 条件。。。
正确答案:
delete
from 表名
where 条件
例子:
delete
from Student
where Sno='20170619';
(15)你对JS和Jquery熟悉么??
我回答:对js比较熟悉,JQuery了解。
接着问:js如何声明一个函数?
我回答:function 函数名(){ }
接着问:js如何声明一个变量??
我的回答:var ,因为js是弱类型语言。
接着问:给你一个页面里面放了一个label,上面有文字,如何获取这个文字??
我的回答:需要先通过getElementById()找到这个label,然后在用getValue()得到文本。
(16)对SpringMVC、struct2、Hibernate 这些框架熟悉么??
我的回答:之前做微信公众号的时候用过SpringMVC、Hibernate,只是会用,不是很清楚其中的原理。其他都是了解过,没使用过。
目前就想到这些。
----------------------------------------------------------------------------结束-------------------------------------------------------------------------------------
问题问完之后,给我简单介绍一下,他们公司给实习生的工资。
然后问我,还有什么问题问他的么?
我问:您感觉我今天面试表现怎么样??
面试官说:基础掌握不牢固,面试之前没有复习。数据库问的基本上都回答错了,JAVA基础不是很牢固。回去等通知吧!
END。