作为一个从事Java开发的应届生的面试总结(一)

作为一个刚毕业的应届生,在杭州做过4个月左右的实习生,然后来到无锡发展,现在总结一些我面试的时候遇到的一些问题。

首先,自我介绍这是必须的,其次让介绍简历上写的项目或者就职业技能询问(看面试官的要求),然后就开始面试(一般是人事,然后是技术面试),最后一般会问你有什么想要了解的吗?(可以问工作地点、时间、内容、几个人开发、公司的项目情况,薪资待遇一般都是和人事谈的)。

1.mybatis中resultType和resultMap的区别

select有两个属性resulttype(适合使用返回值得数据类型是非自定义的,即jdk的提供的类型),SQL语句查询出的字段在相应的pojo(Java对象)中有相同字段对应,而resulttype的内容就是pojo在本项目中的位置,适合于单表查询;resultmap(适合使用返回值是自定义实体类),要在mapper.xml中定义resultmap进行pojo和相关字段的对应,一对一使用associate进行配置,一对多使用collection进行配置

2.hashTable和hashSet、hashMap的区别

hashTable:同步的,继承dictionary,实现map接口,初始容量为11,扩充*2+1

hashSet:不允许重复,存储对象,使用add添加,实现set接口

hashMap:不同步,允许一个空键,多个空值,继承abstractMap,不允许重复,使用put添加,实现map接口,比较快,初始容量为16,扩充*2

3.spring和spring boot配置事务

在spring配置文件中首先配置事务管理器,然后配置事务传播特性最后配置类中方法使用事务

 <!-- 注册配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

 <!-- 配置事务传播特性 -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="find*" read-only="true"/>
            <tx:method name="*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <!-- 配置哪些类的哪些方法参与事务 -->
    <aop:config>
        <aop:advisor pointcut="execution(* com.sqsf.shop.service.*..*.*(..))" advice-ref="transactionAdvice" />
    </aop:config>

spring boot 配置事务一:xml配置

使用@ImportResource("classpath:transaction.xml") 注解引入配置文件,编写transaction.xml配置文件,然后在启动类上添加@ImportResource("classpath:transaction.xml")注解

spring boot 配置事务二:注解配置

在进行事物管理的方法上添加注解@Transactional

4.resource和autowired区别

resource和autowried都是做bean的注入时使用

共同点:两者都可以写在字段和setter方法上。如果写在字段上,就不需要再写setter方法。

不同点:@Autowired是Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照类型byType注入,默认依赖对象必须存在;允许为空,设置required属性为false;若想要按照名称注入,与@Qualifier注解一起使用。@Resource默认按照ByName自动注入,需要导入包javax.annotation.Resource;使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。

5.mybatis批量添加

使用forearm循环插入,属性collection为列表

<!-- 批量新增-->
<insert id="batchSave" parameterType="java.util.List">
    INSERT INTO lp_user_test_batch
    (
    id,
    uid,
    uname,
    uage
    )
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (
        #{item.id,jdbcType=BIGINT},
        #{item.uId,jdbcType=VARCHAR},
        #{item.uName,jdbcType=VARCHAR},
        #{item.uAge,jdbcType=INTEGER}
        )
    </foreach>
</insert>

6.MySQL中concat函数和group_concat函数

一般输出连接字符串首先想到的是查询出两条记录然后使用string的方法拼接字符串,MySQL中有相应的函数处理连接字符串。

concat函数:连接字符串(有一个参数为null,返回值为null)

 select concat('1','2','3')结果为“123”      select concat('11','22',null)结果为null

group_concat函数:将group_by产生的同一分组中的值连接起来,返回一个字符串

语法:group_concat(要连接的字段,【排序字段】,【separator】分隔符默认为逗号)

基本查询
mysql> select * from a;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200   |
|3 | 500   |
+------+------+
6 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,分号分隔
mysql> select id,group_concat(name separator ';') from a group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500   |
+------+----------------------------------+
3 rows in set (0.00 sec)
以id分组,把去冗余的name字段的值打印在一行,逗号分隔,以name排倒序
mysql> select id,group_concat(distinct name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,10   |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)

 

  • 11
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值