美团春招面试2024,实习生常规技术面试题,步步图解让你明白Spring循环依赖

19.如何防范SQL注入式攻击?

只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。

⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:

第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。

第二:删除用户输入内容中的所有连字符。

第三:对于用来执行查询的数据库帐户,限制其权限。

⑵ 用存储过程来执行所有的查询。

⑶ 限制表单或查询字符串输入的长度。

⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。

⑸ 将用户登录名称、密码等数据加密保存。

⑹ 检查提取数据的查询所返回的记录数量。

20.默认的系统数据库有哪些?

1)master数据库(主);2)tempdb数据库(临时);3)model 数据库(模板);4)msdb数据库(计划任务);

21.默认创建一个数据库,会生成哪些文件?

1)主文件(.mdf),2)日志文件(.ldf),无次要文件(.ndf)。

22.创建数据库时,能不能把数据文件和日志文件分开?

可以分开,起到优化作用。把数据文件放到高速读写区,把日志文件放到低速读写区。

23.什么是索引覆盖(Index Covering)查询?

索引覆盖(Index Covering)查询是指数据可以只通过索引获取,而不用接触表。

24.存储过程和触发器的区别?

触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关

25.存储过程和函数的区别?

存储过程是用户定义的一系列SQL语句的集合,而函数通常是数据库已定义的方法,具体区别如下:

1.对于存储过程来说可以返回参数,而函数只能返回值或者表对象.

2.函数必须有返回值,存储过程可有可无

3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用.

26.聚集索引和非聚集索引区别

聚集索引,数据按索引顺序存储,中子结点存储真实的物理数据

非聚集索引,存储指向真正数据行的指针

27.索引的优缺点,什么时候使用索引,什么时候不能使用索引?

索引最大的好处是提高查询速度,

缺点是更新数据时效率低,因为要同时更新索引

对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。

28.数据库的优化

1.创建适当的索引

2.对sql语句优化

3、使用exists或not exists代替in或not in

4、使用存储过程

5、用union替换or(适用于索引列)

6、where代替having,having 检索完所有记录,才进行过滤

7、使用select top或set rowcount来限制操作的行

8、避免嵌套查询

9、对多个字段进行等值查询时,联合索引

29.数据库的主从复制

默认异步复制,容易造成主库数据和从库不一致

一个数据库为Master,一个数据库为slave,通过Binlog日志来实现

slave两个线程,一个线程去读master binlog日志,写到自己的中继日志

一个线程解析日志,执行sql

master启动一个线程,给slave传递binlog日志

半同步复制

只有把master发送的binlog日志写到slave的中继日志,这时主库才返回操作完成的反馈,性能有一定降低

并行复制

slave 多个线程去请求binlog日志

30.数据库连接池的作用

维护一定数量的连接,减少创建连接的时间

更快的响应时间

统一的管理

31.分库分表,主从复制,读写分离

读写分离,读从库,写主库

spring配置两个数据库,通过AOP(面向切面编程),在写或读方法前面进行判断得到动态切换数据源。

32.数据库三范式

1NF 属性不可分

2NF 非主键属性,完全依赖于主键属性

3NF 非主键属性无传递依赖

33.数据库中join的inner join, outer join, cross join

以A,B两张表为例 A left join B

选出A的所有记录,B表中没有的以null 代替

right join 同理

inner join

A,B的所有记录都选出,没有的记录以null代替

cross join (笛卡尔积)

A中的每一条记录和B中的每一条记录生成一条记录

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。


经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

蚂蚁金服5面,总结了49个面试题,遇到的面试官都是P7级别以上

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值