欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JD的Java实习生面试经验总结

程序员文章站 2024-03-22 10:54:34
...

(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)长度表示的是什么?

varchar(20)中的20表示的是varchar数据的数据长度最大是20,超过则数据库不会存储;
varchar(M) M表示的是varchar类型数据在数据库中存储的最大长度,超过则不存;
10、Ajax()方法中,都需要穿那些参数?
面试官提醒了一下url
现在具体说一下这个问题:
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。
type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。
async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。
data: 要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
dataType: 要求为String类型的参数,预期服务器返回的数据类型。
success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //调用本次ajax请求时传递的options参数
error:要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错
误信息、捕获的错误对象(可选)。
ajax事件函数如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情况下textStatus和errorThrown只有其中一个包含信息
this; //调用本次ajax请求时传递的options参数
}
complete(XHR, TS)
类型: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参数
                    }
                });
            });
        });
11、问的是我的某一个项目,然后我在项目中负责的工作,等等吧!就是问了一下项目。

12、最后,问了一下我有没有什么想问的?

如果我面试通过,后面还有几面?如果我面试通过,到公司要做些什么工作?

由于网络比较差,整个面试效果不是很好,我又说了一些,自己的情况吧!后面就是唠了一些自己感兴趣的话题吧!

总体流程下来,JD面试官还是相当nice的,希望自己能去JD工作,锻炼一下自己。