百度一面面经及答案

写在前面

大家好,我是小牛, 微软程序员一枚,之前经常看见大家在 牛客上有 面经分享,但大多数没有答案。由于小牛和几个BAT小伙伴整理了相关八股文题库,这次就当一回工具人,把题目和对应的答案奉上。
这次面经基本都被我之前整理的大厂面试八股文涵盖了,有兴趣的同学可以到我之前的讨论贴查看我之前整理的八股文

常见linux命令

ls 查看当前目录下文件和文件夹

cd 进入当前目录

mkdir 创建文件夹

touch 创建文件

su 进入root权限

rm 删除文件或文件夹

cp 复制文件

mv 移动文件

git使用

首先初始化仓库:

git init - 初始化仓库。

或者下载远程代码库

git pull 下载远程代码并合并

其次添加文件

git add . - 添加文件到暂存区。

git commit - 将暂存区内容添加到仓库中。

最后推向远程代码库

git push 上传远程代码并合并

重写重载区别

重写即子类重写父类的方法,方法对应的形参和返回值类型都不能变。

重载即在一个类中,方法名相同,参数类型或数量不同。

springboot和spring区别

spring框架是一个基于DI和AOP模型设计的一系列应用组件,并且基于该组件,设计了MVC框架,配置文件较为繁琐。

为了简化设计流程,springboot横空出世,利用springboot的默认方式,能很快开发出新的WEB应用。

redis整合到springboot

  1. pom文件添加依赖项spring-boot-starter-data-redis
  2. Springboot中application.properties添加redis服务器ip账户与密码端口号
  3. 利用Autowired注入redisTemplate
  4. 利用redisTemplate进行相关操作

springboot怎么解析一个url

springboot starter集成了springmvc,因此解析url方式与springmvc一致。

  1. 客户端发送url
  2. 核心控制器Dispatcher Servlet接收该请求,通过映射器配置Handler mapping,将url映射的控制器controller返回给核心控制器。
  3. 通过核心控制器找到适配器,调用实现对应接口的处理器,并将结果返回给适配器,
  4. 适配器将获取的数据返回给核心控制器
  5. 核心控制器将获取的数据传递给视图解析器,并获取解析得到的结果
  6. 核心控制器将结果返回给客户端

tcp和udp区别

TCP作为面向流的协议,提供可靠的、面向连接的运输服务,并且提供点对点通信 UDP作为面向报文的协议,不提供可靠交付,并且不需要连接,不仅仅对点对点,也支持多播和广播

http和https区别

http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份。https具有安全性的ssl加密传输协议,加密采用对称加密, https协议需要到ca申请证书,一般免费证书很少,需要交费。

http状态码

1XX:接收的信息正在处理

2XX:请求正常处理完毕

3XX:重定向

4XX:客户端错误

5XX:服务端错误

常见错误码:301:永久重定向 302:临时重定向 304:资源没修改,用之前缓存就行 400:客户端请求的报文有错误 403:表示服务器禁止访问资源 404:表示请求的资源在服务器上不存在或未找到

Get与post区别

Get:指定资源请求数据,刷新无害,Get请求的数据会附加到URL中,传输数据的大小受到url的限制。

Post:向指定资源提交要被处理的数据。刷新会使数据会被重复提交。post在发送数据前会先将请求头发送给服务器进行确认,然后才真正发送数据。

Put与Delete区别

Put规定默认为更新某一资源,和Post一样,一般该操作会对服务器资源进行改变 Delete规定默认为删除某一资源,和Post一样,一般该操作会对服务器资源进行改变

简述栈和队列

栈是一种线性表,其限制只能在表尾进行插入或删除操作。由于该特性又称为后进先出的线性表。队列是一种先进先出的线性表。其限制只能在线性表的一端进行插入,而在另一端删除元素。

hashmap数据结构 链表转红黑树

JDK8 之前底层实现是数组 + 链表,JDK8 改为数组 + 链表/红黑树。主要成员变量包括存储数据的 table 数组、元素数量 size、加载因子 loadFactor。HashMap 中数据以键值对的形式存在,键对应的 hash 值用来计算数组下标,如果两个元素 key 的 hash 值一样,就会发生哈希冲突,被放到同一个链表上。

table 数组记录 HashMap 的数据,每个下标对应一条链表,所有哈希冲突的数据都会被存放到同一条链表,Node/Entry 节点包含四个成员变量:key、value、next 指针和 hash 值。在JDK8后链表超过8会转化为红黑树。

mysql的操作 增删改查

增:INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…)

删:DELETE FROM 表名 [WHERE 条件表达式] TRUNCTE [TABLE ] 表名(删除整张表数据)

改:UPDATE 表名 SET 字段名1=值1,[ ,字段名2=值2,…] [ WHERE 条件表达式 ]

查:SELECT 字段名1,字段名2,… FROM 表名 [ WHERE 条件表达式 ]

mysql的查询语法顺序

where、group by、having、order by、limit

mysql索引数据结构 为什么快

mysql通常采用B+树作为索引结构实现

B+树也是是一种自平衡的多叉树。其基本定义与B树相同,不同点在于数据只出现在叶子节点,所有叶子节点增加了一个链指针,方便进行范围查询。

B+树中间节点不存放数据,所以同样大小的磁盘页上可以容纳更多节点元素,访问叶子节点上关联的数据也具有更好的缓存命中率。并且数据顺序排列并且相连,所以便于区间查找和搜索。

delete和truncate区别

delete是数据操纵语言(DML),其按行删除,支持where语句,执行操作采用行锁,执行操作时会将该操作记录在redo和undo中,因此支持回滚。

truncate是数据定义语言(DDL),其操作隐式提交,不支持回滚,不支持where,删除时采用表级锁进行删除。

题目链接:https://www.nowcoder.com/discuss/680617

#Java求职##百度##面经##java工程师#
全部评论
百度面这么简单的吗?😨
点赞 回复 分享
发布于 2021-07-10 14:37
感谢参与【创作者计划3期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz3jsgh3(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-07-12 18:23

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
18 129 评论
分享
牛客网
牛客企业服务