中科软面试题
- v-show和v-if的区别?
v-if
初始渲染
初始值为 false 组件不会渲染,生命周期钩子不会执行,v-if 的渲染是惰性的。
初始值为 true 时,组件会进行渲染,并依次执行 beforeCreate,created,beforeMount,mounted 钩子。
切换
false => true
依次执行 beforeCreate,created,beforeMount,mounted 钩子。
true => false
依次执行 beforeDestroy,destroyed 钩子。
v-show
渲染
无论初始状态,组件都会渲染,依次执行 beforeCreate,created,beforeMount,mounted 钩子,v-show 的渲染是非惰性的。
切换
对生命周期钩子无影响,切换时组件始终保持在 mounted 钩子。
- vue中常用的方法?
https://baijiahao.baidu.com/s?id=1617717780903718087&wfr=spider&for=pc
- vue父子组件如何传值?
父组件传子组件的值正常都是从后端获取的,官方推荐使用axios来进行前后端交互,使用 axios.get(),
因为axios返回的是Promise,所以直接用.then() 在里面写个接收函数接收返回值ret,ret的返回值就可以
对应的赋值在在data里面定义的kv值。将data里面获取到的值通过在template中的子组件标签上通过v-bind:xxx = ''
这样父组件的操作就完成了,然后再子组件中,通过props{list:Array}来接收从父组件传过来的值,接受到的值就可在
子组件的template中使用。这样就完成了父组件将数据传输到子组件的全部过程。
子组件传父组件的值正常都是由事件决定的,这里拿click举例,当子组件上绑定被点击事件触发时,可以在这个触发事件的函数中
使用Vue自带的this.$emit(‘父组件接收的事件名’,要传输的参数),这样子组件就完成了。然后在父组件中的template里的对应
子组件上通过@事件名 = ‘func’ 然后在父组件的method中补全这个func,这个func中将从子组件中穿过来的值赋值给父组件的data的
kv值,然后就获得到子组件中的传过来的值了。父组件就可以将这个值在template中使用。这样就完成子组件向父组件中传值的全过程.
从执行渲染顺序来说,给子组件的props 中赋值,应该在父组件挂载前,最好是在子组件创建前即 beforeCreate 方法后,赋值。 切不可在beforeCreate 赋值,如果在父组件挂载后,赋值会会导致未定义错误。会触发子组件的更新事件,会导致局部在渲染
现在vue 是单向的数据流,即 改变父组件中的值,可以影响子组件的值,但是改变子组件的值,父组件的值不变
- 数据库exits关键字是干什么用的?
exists子查询:存在查询,子查询不反回任何结果,只产生逻辑真TRUE或逻辑假FALSE
- 哪些情况下需要建立数据库索引?如何创建索引,序列能防止并发?
c. 并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段 sex,male、female 几乎各一半,那么即使在 sex 上建了索引也对查询效率起不了作用。d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。e. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。f. 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
https://blog.csdn.net/bisal/article/details/72848907
- spring中的事务与数据库中事务的区别?
先说一下什么是事务,事务(Transaction):一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。之前一直觉得事务只针对于数据库当中,5种隔离级别,7种传播行为,后来才发现这是针对Spring的,对数据库来说隔离级别只有4种,Spring多了一个DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.总的来说,本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的数据库的事务说简单就只有开启,回滚和关闭,spring对数据库事务的包装,原理就是拿一个数据连接,根据spring的事务配置,操作这个数据连接对数据库进行事务开启,回滚或关闭操作.但是spring除了实现这些,还配合spring的传播行为对事务进行了更广泛的管理.其实这里还有个重要的点,那就是事务中涉及的隔离级别,以及spring如何对数据库的隔离级别进行封装.事务与隔离级别放在一起理解会更好些.
- spring如何做到不同的方法用不同的事务隔离级别?
1.TransactionDefinition.ISOLATION_DEFAULT: 使用后端数据库默认的隔离级别,Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别。2.TransactionDefinition.ISOLATION_READ_UNCOMMITTED: 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复。3.TransactionDefinition.ISOLATION_READ_COMMITTED: 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。4.TransactionDefinition.ISOLATION_REPEATABLE_READ: 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。5.TransactionDefinition.ISOLATION_SERIALIZABLE: 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别在springboot中设置事务的级别比较简单,只需要通过value属性指定配置的事务管理器名即可@Transcational(value=)
- 数据库联结查询用join和不用jion区别?
不用jion相当于内连接,几乎没区别,写上inner jion更加直观