这次面试的是北京的一家科技公司,面试的岗位是Java后端,面试采用线上面试,实习采用远程办公。下面是部分面试题,欢迎一起学习。
1、现在有1011种蘑菇,其中1种是毒蘑菇。人一旦吃了微量的毒蘑菇,就会在72小时后发作身亡。现在用松鼠做试验,从开始喂松鼠计时,要在72小时后马上找出毒蘑菇,问最少需要多少只松鼠?(需要给出解题过程)
请在「答题卡」作答,并通过直播清晰表述你的思路和分析过程。另外,「答题卡」中也尽量留下答题过程,
因为思路比结果重要。只有答案,不说思路或分析过程,不得分。
解题思路:
- 将1011种蘑菇编号为0到1010。
- 每只松鼠代表一个二进制位,从右到左编号为0到9。
- 每种蘑菇的编号转换为二进制表示,然后根据二进制的值来决定是否喂给对应的松鼠。
- 72小时后,根据松鼠的生死情况,可以确定毒蘑菇的编号。
具体步骤:- 将1011种蘑菇编号为0到1010。
- 每只松鼠代表一个二进制位,从右到左编号为0到9。
- 对于每种蘑菇,将其编号转换为二进制表示,然后根据二进制位的值来决定是否喂给对应的松鼠。
- 如果二进制位为1,则喂给对应的松鼠。
- 如果二进制位为0,则不喂给对应的松鼠。
- 72小时后,根据松鼠的生死情况,可以确定毒蘑菇的编号。
- 如果松鼠死了,则对应的二进制位为1。
- 如果松鼠活着,则对应的二进制位为0。
3、集合操作类(代码实现)
主要涉及到集合去重、数组分离等集合相关操作,需要熟悉集合API
4.1、MyBatis 中的一级缓存和二级缓存有什么区别?
-
一级缓存:一级缓存是 MyBatis 的默认缓存,它在每个 SqlSession 中都是独立的。一级缓存的作用范围是 SqlSession 的生命周期。当 SqlSession 关闭时,一级缓存中的数据会被清空。一级缓存主要用于减少对数据库的频繁访问,提高查询效率。
-
二级缓存:二级缓存是 MyBatis 的全局缓存,它在多个 SqlSession 之间共享。二级缓存的作用范围是整个应用程序。二级缓存可以配置为全局开启或关闭,也可以在每个命名空间中单独配置。二级缓存主要用于减少对数据库的频繁访问,提高查询效率,特别是在多用户环境中。
4.2、 MyBatis 中的 #{} 和 ${} 的区别是什么?
-
#{}:#{} 是 MyBatis 的预编译处理,它会将 SQL 中的 #{} 替换为预编译语句的参数,可以防止 SQL 注入。#{} 会将参数值进行字符串拼接,如果参数是多个值,会用逗号分隔。
-
** ∗ ∗ : {}**: ∗∗:${} 是 MyBatis 的字符串替换,它会将 SQL 中的 替换为字符串,不会进行预编译处理。 {} 替换为字符串,不会进行预编译处理。 替换为字符串,不会进行预编译处理。{} 会直接将参数值拼接到 SQL 中,如果参数是多个值,会用逗号分隔。${} 不安全,容易导致 SQL 注入。
4.3、MyBatis 中的 resultMap 与 resultType 是什么?如何使用?
-
resultMap:resultMap 是 MyBatis 中用于定义结果集映射的标签。它用于描述数据库结果集和对象属性之间的映射关系。resultMap 可以包含复杂的映射关系,如一对一、一对多等。resultMap 通常用于复杂的查询结果映射,特别是当查询结果包含关联对象时。
-
resultType:resultType 是 MyBatis 中用于指定结果集映射类型的属性。它通常用于简单的查询结果映射,如查询单个对象或多个对象。resultType 可以是 Java 类型,如 String、Integer、自定义的 Java 类等。
使用方法:
- 使用 resultMap 时,需要在 SQL 映射文件中定义 resultMap 标签,并在 select 标签中引用该 resultMap。
- 使用 resultType 时,直接在 select 标签中指定 resultType 属性,指定结果集映射的 Java 类型。
4、Vue相关问题
1.请简述Vue.js的生命周期函数及其执行顺序。
2.Vue.js中的v-bind指令和v-mode1指令有什么区别?
3.请简述Vue.js的组件通信方式及其优缺点。
4.Vue.js如何实现父子组件之间的数据传递?
5.请简述Vue.js中的响应式原理。
6.如何在Vue.js中实现路由跳转?
7.Vue.js中的computed和watch有什么区别?
8.Vue.js中的v-for指令和v-if指令有什么区别?
9.请简述Vue.js中的mixins和extends的作用及其区别。
10.Vue.js中的keep-alive组件有什么作用?如何使用?
关注我,带你了解更多面试题!