JD的Java实习生面试经验总结
(1)如果是视频面试或者语音面试的话,一定要保证您的设备和网络通畅。
(2)回忆面试题:
1、在MyBatis中,你的SQL语句是通过什么标识的?或者是你是怎么调用你的SQL语句的?
答案:首先你先定义一个操作users表的sql映射文件,名字就叫做userMapper.xml,这个文件放到me.gacl.mapping包中。
在userMapper.xml中文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的。
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="me.gacl.mapping.userMapper">
<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
User类就是users表所对应的实体类
-->
<!--
根据id查询得到一个user对象
-->
<select id="getUser" parameterType="int"
resultType="me.gacl.domain.User">
select * from users where id=#{id}
</select>
</mapper>
接着在conf.xml文件中注册userMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="XDP" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="me/gacl/mapping/userMapper.xml"/>
</mappers>
</configuration>
我们在来看看,是如何调用这个select语句的。
package me.gacl.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import me.gacl.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Test1 {
public static void main(String[] args) throws IOException {
//mybatis的配置文件
String resource = "conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
* getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}
第一道题,不算难题,只要你写过MyBatis,应该都不算难。
2、在MyBatis的配置文件中,你经常用到的一些标签都有什么?
<mapper> <select> <update> <delete><insert>
3、springMVC中,你的Controller层都是怎么写的?
controller层的主要功能是:请求链接地址时,访controller类中的对应那一个方法,该方法返回请求链接地址所需要的数据。controller层调用service层里访问数据的dao层。一般在service层实现具体的业务逻辑。如果项目中用到MyBatis框架,则service层,直接调用SQL语句对应的mapper。
4、springMVC中的注解是怎么用的?有什么作用?
5、还有一个是springMVC中,不让在Controller中返回数据,你该怎么处理?具体记不清了,大概就是用null方法返回什么的。
6、也是一个springMVC中的一个问题,具体的问题没有听的太清,所以也就忘记了。
7、你都熟悉哪些数据库?
MySQL、SQL Server
那你知道MySQL中的(一个名词),当时听不清,好像也不会。
8、说出MySQL中常用的数据类型?
int、float、double、char、varchar、text
9、MySQL中int[5]是什么意思?
int类型数据的字节大小是固定的4个字节;
但是int(5)和int(11)区别在于,显示的数据位数一个是5位一个是11位,在开启zerofill(填充零)情况下,若int(5)存储的数字长度是小于5的则会在不足位数的前面补充0,但是如果int(5)中存储的数字长度大于5位的话,则按照实际存储的显示(数据大小在int类型的4个字节范围内即可),也就是说int(M)的M不代表数据的长度;
int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据;
拓展:varchar(20)长度表示的是什么?
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //调用本次ajax请求时传递的options参数
误信息、捕获的错误对象(可选)。
ajax事件函数如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情况下textStatus和errorThrown只有其中一个包含信息
this; //调用本次ajax请求时传递的options参数
}
类型:Function
请求完成后回调函数 (请求成功或失败之后均调用)。
参数: XMLHttpRequest 对象和一个描述请求类型的字符串。
这是一个 Ajax 事件。
$(document).ready(function() {
jQuery("#clearCac").click(function() {
jQuery.ajax({
url: "/Handle/Do.aspx",
type: "post",
data: { id: '0' },
dataType: "json",
success: function(msg) {
alert(msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
},
complete: function(XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
});
});
});
12、最后,问了一下我有没有什么想问的?
如果我面试通过,后面还有几面?如果我面试通过,到公司要做些什么工作?
由于网络比较差,整个面试效果不是很好,我又说了一些,自己的情况吧!后面就是唠了一些自己感兴趣的话题吧!
总体流程下来,JD面试官还是相当nice的,希望自己能去JD工作,锻炼一下自己。
上一篇: 携程Java实习生面试题
下一篇: MongoDB进阶——聚合操作