基础面试题篇2

前言

前两天又比较忙,放假前的赶工。今天已经到家啦,咱们继续分享一下常用的基础知识。

基础面试题篇2

  1. BIO AIO NIO有何区别?

BIO:同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

  1. 集合迭代器Iterator

Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。
千万别在循环中直接移除元素,要使用迭代器。其本身也是一种设计模式。
注意在迭代过程中不要修改集合元素,否则会报并发修改异常。

  1. 说一下atomic的原理

atomic 主要利用 CAS (Compare And Wwap) 和 volatile 以及 native 方法来保证原子操作,从而避免 synchronized 的高开销,执行效率大为提升。

  1. XSS与CSRF

XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构、重定向到其他网站等。
预防 XSS 的核心是必须对输入的数据做过滤处理。一般使用Filter实现。
CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。
防御手段:验证请求来源地址;关键操作添加验证码;在请求地址添加 token 并验证。

  1. 介绍一下tcp和udp

tcp 和 udp 是 OSI 模型中的传输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。
两者的区别大致如下:
tcp 面向连接,udp 面向非连接即发送数据前不需要建立链接;
tcp 提供可靠的服务(数据传输),udp 无法保证;
tcp 面向字节流,udp 面向报文;
tcp 数据传输慢,udp 数据传输快;

  1. tcp 为什么要三次握手?

如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。

  1. 说一下 tcp 粘包是怎么产生的?

tcp 粘包可能发生在发送端或者接收端,分别来看两端各种产生粘包的原因:
发送端粘包:发送端需要等缓冲区满才发送出去,造成粘包;
接收方粘包:接收方不及时接收缓冲区的包,造成多个包接收。

  1. 介绍一下spring mvc运行流程

spring mvc 先将请求发送给DispatcherServlet。
DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。
DispatcherServlet 再把请求提交到对应的 Controller。
Controller 进行业务逻辑处理后,会返回一个ModelAndView。
Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象。
视图对象负责渲染返回给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用PySpark处理DataFrame以拆分数组列

问题:用pyspark 处理df1,df1 有三列,第一列是商品pid,第二列是商品name,第三列是候选标品cid_list(有多个cid),将df1中的cid_list拆开,转换成一个商品id和name对应一个cid,但是有多行 from pyspark.sql.functions import explode, col# 假设…

神经网络 | 基于 CNN 模型实现土壤湿度预测

Hi,大家好,我是半亩花海。在现代农业和环境监测中,了解土壤湿度的变化对于作物生长和水资源管理至关重要。通过深度学习技术,特别是卷积神经网络,我们可以利用过去的土壤湿度数据来预测未来的湿度趋势。本文将使用 Pad…

深入了解关联查询和子查询

推荐阅读 给软件行业带来了春天——揭秘Spring究竟是何方神圣(一) 给软件行业带来了春天——揭秘Spring究竟是何方神圣(二) 文章目录 推荐阅读关联查询子查询 关联查询 关联查询 从多张表中查询对应记录的信息,关联查…

字节、十六进制、二进制之间的关系

字节、十六进制和二进制是计算机领域中常用的术语,它们之间有着密切的关系。在这篇文章中,我们将探讨字节、十六进制和二进制之间的关系,并提供一些例子来说明它们的应用。 首先,让我们了解一下字节。字节是计算机存储和传输数据…

组合数学基础

隔板法 X 1 X 2 . . . X n m , X i > 0 X_1X_2...X_nm,\quad X_i>0 X1​X2​...Xn​m,Xi​>0 求方程解的个数 求方程解的个数 求方程解的个数 m 个球插入 n − 1 个板将 m 个球分成 n 份 m个球插入n-1个板将m个球分成n份 m个球插入n−1个板将m个球分成n份 方程…

Ubuntu下的磁盘管理,分区管理,挂载和卸载分区

探索Ubuntu下的磁盘管理 在Ubuntu操作系统中,磁盘管理是系统维护中至关重要的一部分。它涉及到分区、格式化、挂载、监视以及维护磁盘等操作。本文将带您深入了解Ubuntu下的磁盘管理,并介绍一些常用的工具和技术。 1. 磁盘基础知识 在开始磁盘管理之前…

Acwing---3302. 表达式求值

表达式求值 1.题目2.基本思想3.代码实现 1.题目 给定一个表达式,其中运算符仅包含 ,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。 注意: 数据保证给定的表达式合法。题目保证符号 - 只作…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展,越来越多的企业开始选择使用云服务器来存储和处理数据。然而,对于一些企业来说,他们可能更倾向于使用传统的服务器。在这种情况下,安全性成为了一个重要的考虑因素。那么,服务器和云服务器哪…

mac下载工具:JDownloader 2 for Mac 中文版

JDownloader是一款开源的下载管理工具,主要使用Java编程语言开发,因此它能够在支持Java的操作系统上运行,包括Windows、Linux和Mac OS。这款软件专门为那些需要通过网盘下载文件的用户提供便利,它支持众多流行的网盘服务&#xff…

11、SystemInit函数解读

1、系统时钟初始化函数:SystemInit(); 使用库函数的时候,在系统启动之后会自动调用 2、首先如果使用外部时钟源HSE,要配置外部晶振频率:stm32f4xx.h 3、初始化之前首先通过宏定义定义下面变量来定义系统时钟频率: …

python将Excel文档转成.db数据库文件

python实现Excel转.db数据库 1.程序实现 程序实现以下功能: 1.读取一个Excel文件,文件名通过函数传参数传入 2.将文件读取的内容保存到一个数据库文件中 3.数据库的文件名以传入的Excel文件的文件名命名 4.将excel文件的工作簿的名字作为数据库的表单名 5.将Excel…

idea修改项目git地址

大家好,今天给大家分享的知识是如何在idea中修改项目的git地址。 一、修改地址 首先我们先找到菜单栏中Git选项,然后点击管理远程(Manage Remote) 之后双击origin之后就可以定义名称或者URL了。

电路设计(10)——超温报警电路的proteus仿真

1.题目背景 在现实生活中,常有一种工程技术,即带有自动温度补偿的设备,能在规定温度内正常工作。但是为了设备安全,需设定工作的上限温度,万一温控补偿失效,设备温度一旦超出上限温度时,便立即切…

前端excel带样式导出 exceljs 插件的使用

案例 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1"><title>exceljs 使用</title></head><body><button …

ReactNative实现宽度变化实现的动画效果

效果如上图所示&#xff0c;通过修改设备宽度实现动画效果 import React, {useRef, useEffect, useState} from react; import {Animated, Text, View, Image} from react-native;const FadeInView props > {const fadeAnim useRef(new Animated.Value(0)).current;React…

PyTorch、NCNN、Numpy三者张量的shape

目录 一、PyTorch二、NCNN三、Numpy 一、PyTorch 在 PyTorch 中&#xff0c;张量&#xff08;Tensor&#xff09;的形状通常按照 (N, C, H, W) 的顺序排列&#xff0c;其中&#xff1a; N 是批量大小&#xff08;batch size&#xff09; C 是通道数&#xff08;channel number…

【Node系列】连接数据库

文章目录 一、连接MySql二、连接MongoDB三、相关链接 一、连接MySql 首先&#xff0c;您需要安装mysql模块。在命令行中&#xff0c;导航到您的项目目录并输入以下命令&#xff1a; npm install mysql然后&#xff0c;您可以在Node.js代码中使用mysql模块来连接MySQL数据库、…

在vs code的terminal,debug执行python main.py --train True

GPT4告诉我&#xff1a; 在VS Code中以debug状态执行带有参数&#xff08;如--train&#xff09;的main.py文件&#xff0c;你需要在launch.json配置文件中正确设置参数。以下是详细步骤&#xff1a; 打开你的main.py文件&#xff1a;确保你的main.py文件已经在VS Code中打开…

鸿蒙 状态管理-应用存储

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 1.概念 装饰器&#xff08;State、Prop等&#xff09;是用于组件的状态修饰符&#xff0c;本篇讲的是更上一层级别&#xff…

牛客周赛 Round 31(A~F)

文章目录 ABCDEF A #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (b); i) #define fep(i,a,b) for(int i (a); i > (b); --i) #define pii pair<int, int> #define pll pair<long long, long long> #defi…