集思书源、用友一面凉经
之前面的问的 比较少就放一起了
集思书源
- Tcp的三次握手和四次挥手没有最后一次会怎样?
- 缺少第三次握手会触发服务端超时重传机制,重传SYN-ACK报文,直到接收到第三次握手或达到最大重传次数
- 缺少第四次握手服务端会重发FIN报文,重传次数由tcp_orphan_retries参数控制
- 什么是粘包和拆包
- 粘包:发送方发送多个数据包,接收方合并处理无法区分边界
- 拆包:大数据包因网络MTU限制被分片传输,接收方需重组
- HTTP如何解决粘包
- 固定长度:通过Content-Length明确数据长度,接收方按长度读取
- 分隔符:用空行分隔请求头和请求体,解析边界
- 分块传输:HTTP/1.1中,Transfer-Enconding:chunked将数据分块,每块带长度表识,接收方按块解析
- java如何将数据写到磁盘中
字节流:
try (FileOutputStream fos = new FileOutputStream("file.txt")) {
fos.write("数据".getBytes());
} catch (IOException e) { e.printStackTrace(); }
字符流:
try (FileWriter writer = new FileWriter("file.txt")) {
writer.write("数据");
} catch (IOException e) { e.printStackTrace(); }
NIO(通道 + 缓冲区):
try (FileChannel channel = new FileOutputStream("file.txt").getChannel()) {
ByteBuffer buffer = ByteBuffer.wrap("数据".getBytes());
channel.write(buffer);
} catch (IOException e) { e.printStackTrace(); }
用友
- 线程创建方式
- 继承Thread类、重写Runnable方法、重写Callable方法、使用线程池创建
- 常见数据库(Mysql)引擎
- Innodb:支持事务、行级锁,适合高并发读写
- MyISAM:不支持事务,表级锁,适合读多写少场景
- Memory:数据存内存,读写快,适合临时数据
- Redis常见数据类型、持久化方案、使用场景
- 常见数据类型:String、Hash、List、Set、Zset、Bitmap、HyperLogLog、Geospatial
- 持久化
- RDB:定时快照,恢复快,可能丢失数据
- AOF:记录写操作,数据完整,文件大
- 场景:缓存热点数据、计数器(incr)、消息队列、排行榜(Zset)
- Spring框架常用注解
- 组件扫描与管理注解:@Component、@Repository、@Service、@Controller
- 依赖注入:@Autowried、@Qualifier
- 配置类与Bean注解:@Configuration、@Bean、@Import
- 事务注解:@Transactional
- SpringMVC执行流程
- 客户端发送请求至DispatcherServlet
- DispatcherServlet通过HandlerMapping找到对应的Controller
- 执行Controller逻辑,返回ModelAndView
- ViewResolver解析视图,渲染数据
- 返回响应给客户端
- Linux常用指令
- 文件:ls、cd、rm、mkdir
- 文本:cat、grep
- 权限:chmod、chown
- 进程:ps、kill
- 网络:ping、ifconfig/ip