写这篇博客感触很多,在大二的时候很幸运的找到了JAVA实习,俩个月的时间让我自认为学到了一些东西。在前俩天自信满满去面试,这次的笔试题让我受到了打击,尤其是jquey,我之前没有接触过,笔试没答好,后面的面试状态也不太好,今天就整理总结下面试题。知耻而后勇。
一、选择题
(单选)
1、下列()不属于基本数据类型的是?
A、long B、string C、int D、byte
解析:答案是b,java有8大基本数据类型——byte,short,char,int,float,double,long,boolean。
而String是引用数据类型,其内存分部也不一样,基本数据类型可以在栈中直接分配
内存,引用数据类型是对象的引用在栈中,对象实际存放在堆中。
2、下列说法正确的是()
A、String没有length()方法,数组没有length()方法
B、String没有length()方法,数组有length()方法
C、String有length()方法,数组没有length()方法
D、String没有length()方法,数组有length()方法
解析:答案是C,数组没有length()方法,有length属性。而String中是有length方法的,没有length属性。
3、在异常处理中,如释放资源、关闭文件、关闭数据库等由()来完成
A、try字句 B、catch字句 C、finally字句 D、throw字句
解析:try:可能发生异常的语句,catch:捕获,并处理异常(printStackTrace()用来跟踪异常事件发生时执行堆栈的内容),throw:方法内部抛异常,throws:声明方法异常,finaly:代码中无论是否有异常都会执行,常用来关闭、清除资源。在这里补充一个知识点,如果try字句中有返回值,那么finaly的执行时在return前执行的,自己做了个小测试如下。
public class Test01 {
private int i = 1;
public static void main(String[] args) {
Man man = new Man();
System.out.println(man.init());
}
}
class Man {
public String init() {
try {
return "我是return";
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("我是finally");
}
return "返回结束";
}
}
从返回结果我们可以看出,finally是执行与try字句的return之前的。
4、若要定义一个类方法,应使用()修饰符
A、static B、private C、public D、package
解析:答案选A。类方法即静态方法,类域即静态成员,所以是static。
5.在jquey中,想要从DOM中删除所有匹配的元素,下面哪一个是正确的?
A、delete() B、empty() C、remove() D、removeAll()
解析:答案选C,jquery根本就没有removeAll方法;jquery中,delete是一种post请求;empty()是清空该匹配元素的内容,但是该匹配元素还是存在;remove()是清空该匹配元素的内容,而且该匹配元素也会同时被清空;
6、在java中,以下代码()正确的创建了一个InputStreamReader对象。
A、InputStreamReader(new FileInputStream(“1.dat”));
B、InputStreamReader(new FileReader(“1.dat”));
C、InputStreamReader(new BufferReader(“1.dat”));
D、InputStreamReader(“1.dat”);
解析:答案选A,new InputStreamReader()的参数必须是InputStream类型(或其子类类型,如FileInputstream,且1.dat是一个文件(file),所以只能用FileInputstream读入,而不能用DataInputstream,DataInputstream只能读入简单类型的变量)。
(多选)
7、下面属于面向对象特征的是()
A、重载 B、重写 C、封装 D、继承
解析:答案ABCD,面向对象的三大特征:多态、封装、继承。重载是编译时的多态,重写是运行时的多态,也是面向对象思想里最有特点的一部分。
8、以下关于final关键字的说法错误的是()
A、final是java中的修饰符,可以修饰类、接口、抽象类、方法、和属性
B、final修饰的类肯定不能被继承
C、final修饰的方法不能被重载
D、final修饰的变量不允许再次赋值
解析:答案是AC,、final关键字可以用来修饰类、方法、变量。各有不同。
修饰类(class)。
1、该类不能被继承。
2、类中的方法不会被覆盖,因此默认都是final的。
3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类
修饰方法(method)
1、该方法可以被继承,但是不能被覆盖。 (也就是不能被重写)
2、用途:一个类不允许子类覆盖该方法,则用final来修饰
3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效率。
4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)
修饰变量(variable)
1、用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。
2、特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。
修饰参数(arguments)
1、用final修饰参数时,可以读取该参数,但是不能对其作出修改
注意:final关键字不能用来抽象类和接口。
9、接口和抽象类描述正确的有()
A、抽象类没有构造函数
B、接口没有构造函数
C、抽象类不允许多继承
D、接口中的方法可以有方法体
解析:答案是BCD。一个类可以实现多个接口,但是却只能继承最多一个抽象类;抽象类可以包含具体的方法,接口的所有方法都是抽象的;抽象类可以声明和使用字段,接口则不能,但接口可以创静态的final常量;接口的方法都是public(java8新特性有default)的,抽象类的方法可以使public,private,protecte或者是默认的package;抽象类可以定义构造函数,但是接口不行。JAVA不支持抽象类的多继承,就好比一个东西不能使人又是植物。Java8的新特性——在接口中的方法可以有方法体了,下图为证。
二、简答题
11.已知ID的input输入框,希望获取这个输入框的值,怎么做(不使用第三方框架)?
var ID=document.getElementById(“ID”);
console.log(ID.value);
12.body中的onload(函数)和jquery中的document.ready()有什么区别?
onload()和document.ready()的区别有以下两点:
(1、我们可以在页面中使用多个document.ready(),但只能使用一次onload()。
(2、document.ready()函数在页面DOM元素加载完以后就会被调用,而onload()函数则要在所有的关联资源(包括图像、音频)加载完毕后才会调用。
13.jquery里的id选择器和class选择器分别如何实现(语法角度)?
jQuery选择器的写法和CSS选择器十分类似,但是功能却不同:class选择器获取到的是一类对象的集合,ID选择器是获取一个对象。
14.你如何使用jquery来提取一个HTML标记的属性,例如href?
可以通过$(“对象”).attr(“href”);这样获取。 attr是一个jquery自带获取对应属性的方法,在attr()里面输入任意的标签里面的属性的,都可以获取到值。
15.表单参数param,请求路径url,请用jquery实现表单异步提交。
$.ajax({
url:url,
type:'GET,
dataType: 'json',
async: true,
data:param,
success: function(res) {
console.log(res);
}
})
16.java的基本数据类型有哪些?
java有8大基本数据类型——byte,short,char,int,float,double,long,boolean。
17.简单描述java语言中的数据类型和MYSQL数据库中的数据类型的对应关系。
18.请概述List、map、set的区别。
它们都处于java.util包中。
a. List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,例如通过list.get(i)方法来获取集合中的元素;
b. Map 中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对象可以重复;
c. Set 集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对象按照特定的方式排序,例如 Tree Set 类,可以按照默认顺序,也可以通过实现 Java.util.Comparator< Type >接口来自定义排序方式。
19.说出一些5个常用的类、包、接口
类:java.lang.System java.lang.Obiect java.lang.String
java.io.FileInputStream java.io.FileOutputStream
包:java.lang java.io java.swt java.util java.sql
接口:java.util.List java.util.Map java.lang,Runnable
java.lang.Cloneable java.io.Serializable
20.abc.tet文件放在本地端口为8081的tomcat服务器的root目录下,那abc.txt的访问路径是什么?
http://localhost:8081/root/abc.txt(应该是这个,如果有问题请说哈)21.springMVC常用的三个注解,并简单描述使用场景以及作用。
@Controller :告诉springmvc的核心控制器这是一个controller,然后被管理,并完成它的依赖注入。
@Service:表明这是一个业务类,用于服务前后台。
@ResponseBody :该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容, 通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。配置返回JSON和XML数据。
@RestControllrt:相当于@Controller+@ResponseBody ;
@RequestMapping:它可以用于类上,也可以用于方法上。用于类上的注解会将一个特定请求或者请求模式映射到一个控制器之上,表示类中的所有响应请求的方法都是以该地址作为父路径;
@AutoWired:它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
22.sql查询中分组、分页、排序、总记录数的查询各自的关键词是什么,当四个都存在时给出先后顺序。
分组:group by
例如:select count(*) from user group by id;
分页:
例:select * from user limit start, count;
从start开始,获取count条数据。
start索引从0开始。
排序:order by
例如:select * from user order by age asc;(asc 升序 , desc 降序 , 默认为升序。)
总记录查询:count()
例如:select count() from user where id=1;
顺序: count(*),group by,order by,limit最后