【面经】大搜车-java-社招
又整理了一篇今年初的面试总结, 这次是大搜车。
一面
TCP三次握手四次挥手详细画出来
握手 A ---SYN-----> BA <--SYN+ACK-- B
A ---ACK-----> B
挥手 A ---FIN--> B
A <--ACK--- B
A <--FIN--- B
A ---ACK--> B
hashmap和hashset的区别
Collections实现线程安全和ConcurrentHashMap的区别
加锁无序可能导致死锁,加锁有序但解锁无序不会
spring/spring boot启动加载过程
rocketMQ消息是否有序?可否有序(有序队列)?是否支持事务
如何实现优先队列,链表,二叉树(大小堆),根据树节点数计算高度,查询速度和什么有关(高度)
TPC、UDP、IP、套接字之间的关系
IP协议对应于网络层,TCP/UDP协议对应于传输层(解决如何传输),而HTTP协议对应于应用层(解决如何包装数据)
套接字(socket),是对TCP/IP协议的封装,提供调用接口
MySQL默认事务隔离级别?什么时候脏读、幻读?如何实现事务?@Transactional注解的参数意义以及注解实现事务的原理?
innodb默认隔离级别:可重复读
MongoDB和MySQL的区别,各自使用场景
MySQL 关系型,传统sql,成熟的体系。 数据量很大时变慢
MongoDB 非关系型,文档存储,独特的sql,快速(热数据存在内存),高扩展(分片),json格式。 不支持事务,单个文档支持原子性操作
MongoDB是原子性的吗
单个文档的操作是
线程、进程区别和联系
进程间通信方式
1、管道 无名管道 半双工,仅用于亲缘关系的进程(父子进程、兄弟进程),只存在于内存中。
2、FIFO 命名管道,它是一种文件类型。可以在无关的进程之间交换数据,存在于文件系统中。
3、消息队列,存放在内核中,由一个标识符(即队列ID)来标识。
消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
4、信号量
5、共享内存 进程用页表来关联虚拟地址和物理地址,将不同的虚拟地址关联到同一个物理地址。相关函数:创建共享内存/shmget、挂接共享内存/shmat、去关联共享内存/shmdt、销毁共享内存/shmctl
共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。
因为多个进程可以同时操作,所以需要进行同步。
信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。
redis存储方式
快照(RDB文件),数据先存在内存,累计达到阈值后dump。文件小,性能高。
AOF,数据先存在内存,异步记录写操作。文件大(可以使用重写减少),实时/准实时
责任链模式的好处
happends before
2面
部门自研中间件怎么实现
。。。忘了
手写代码:输入123456.234,输出:一十二万三千四百五十六点二三四
最后来个技术交流群,喜欢交流、分享技术的同学来玩啊~
过期了请加我微信拉你(nulliu)