avatar-decorate
Java抽象带篮子 level
快手_后端开发 identity
获赞
9909
粉丝
8935
关注
231
看过 TA
8.5W
中南大学
2025
Java
IP属地:北京
有7k字可直接背轮子项目话术小号Java抽象小篮子
私信
关注
头像
2024-05-19 11:24
已编辑
快手_后端开发
算法:开局做个最长回文子串,秒了拷打项目:说我的苍穹外卖没必要用redis,只用mysql就行了,绷,八股:1.线程,进程,携程的区别2.CAP(没听过)3.微服务(没学过)4.redis:zset原理,数据过期策略5.mysql:慢查询;4个隔离级别;主从同步原理;存储引擎6.rabbitMQ作用7.concurrenthashmap怎么保证安全的8.linux排查问题的常用指令,grep知道吗9.接口设计的好不好从那几个方面衡量最大的遗憾就是微服务没学过,找实习还是有必要背背微服务八股的
阿森的牛客账号:对于微服务,个人感觉就是多个Spring Boot通过HTTP(或者其他通信协议)进行数据通信。你可以把一个Spring Boot看作成一个HTTP接受命令,然后内部执行,返回结果。那么如此,多个Spring Boot项目都可以通过HTTP来进行相互的调用。 基于上述的衍生,出现了: - 服务中心:Spring Boot之间不是通过编写配置文件来互相交流,而是向某一个程序注册自己的服务名字和ip地址。假如某个Spring Boot需要另一个服务,就可以去注册中心根据“服务名字”去获取“对应的ip地址”。 - 配置中心:在原来一个Spring Boot就是一个整体的项目,现在是多个服务之间是一个项目了。那么就需要统一管理,Spring提供了刷新配置的方法,基于这个方法,每个Spring Boot开一个接口来刷新自己的配置文件。为了统一管理,出现了配置中心,开发人员可以直接统一管理每个Spring Boot的配置文件,然后调用对方的接口来刷新配置。
查看9道真题和解析
0 点赞 评论 收藏
分享
头像
2024-01-22 18:39
快手_后端开发
30分钟,面试官不开摄像头,没做算法题,完全按简历写得来问,没问项目,感觉有点水1.redis5种数据结构2.缓存穿透、雪崩、击穿3.redis分布式锁4.Spring常用注解5.Mybatis怎么分页?本来想问分页的原理后来觉得太难了又没问6.常用集合有哪些7.hashmap实现原理8.mysql的优化9.什么是threadlocal10.怎么判断一个sql是慢查询11.concurrenthasnmap原理12.cas13.volatile14.jvm类加载器和类加载过程15.linux常用命令
不想拖24届后腿:ChatGPT说的对吗:1. **Redis 5种数据结构:** - 字符串(String) - 哈希表(Hash) - 列表(List) - 集合(Set) - 有序集合(Sorted Set) 2. **缓存穿透、雪崩、击穿:** - 缓存穿透:指查询一个一定不存在的数据,导致对数据库的高并发查询,绕过缓存直接查询数据库。 - 缓存雪崩:指缓存中大量的数据同时过期,导致大量请求落到数据库,引起数据库压力骤增。 - 缓存击穿:指某个热点key在缓存中过期时,同时有大量请求查询这个key,导致这些请求直接落到数据库,引起数据库压力骤增。 3. **Redis分布式锁:** - 使用SETNX(SET if Not eXists)实现,即尝试设置一个值,如果该值不存在,则设置成功,视为获取到锁。同时,为了防止死锁,可以给锁设置过期时间。 4. **Spring常用注解:** - `@Autowired`: 自动装配 - `@Component`: 声明组件 - `@Controller`, `@Service`, `@Repository`: 分别声明控制器、服务、仓储组件 - `@RequestMapping`: 映射请求 - `@Transactional`: 事务管理 - `@Aspect`: 切面编程 5. **Mybatis怎么分页:** - 使用 `LIMIT` 和 `OFFSET` 关键字进行分页。 - 在 SQL 语句中添加 `LIMIT #{start}, #{pageSize}`,其中 `start` 表示起始位置,`pageSize` 表示每页记录数。 6. **常用集合有哪些:** - List, Set, Map, Queue, Stack, ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap 等。 7. **HashMap实现原理:** - 基于数组和链表/红黑树的数据结构。 - 使用哈希算法确定元素在数组中的位置,解决哈希冲突采用链表或红黑树。 - JDK8引入红黑树,提高了查询性能。 8. **MySQL的优化:** - 使用合适的索引。 - 优化查询语句。 - 避免全表扫描。 - 合理设计数据库表结构。 - 分区表、分库分表等。 9. **什么是ThreadLocal:** - `ThreadLocal` 是Java中的一个线程范围内的变量。 - 每个线程都有自己独立的 `ThreadLocal` 实例,线程可以通过 `set`、`get` 方法操作自己的变量副本。 - 主要用于线程间数据隔离,每个线程都可以独立修改自己的副本而不影响其他线程。 10. **怎么判断一个SQL是慢查询:** - 使用 MySQL 的慢查询日志功能,通过配置慢查询日志阈值来记录执行时间超过指定时间的 SQL。 - 使用数据库性能分析工具,如 `explain` 分析查询计划。 11. **ConcurrentHashMap原理:** - 使用分段锁(Segment)来提高并发性。 - 每个 Segment 类似于一个小的 HashMap,拥有自己的锁。 - 操作时首先定位到具体的 Segment,然后在该 Segment 上进行操作,减小锁的粒度。 12. **CAS(Compare and Swap):** - CAS是一种无锁算法,基于硬件的原子操作。 - 通过比较当前值和期望值,如果相等则使用新值替换当前值。 - 在并发环境下用于保证变量的原子性操作。 13. **Volatile:** - 保证可见性,一个线程修改了共享变量的值,其他线程能够立即看到修改。 - 禁止指令重排序优化。 14. **JVM类加载器和类加载过程:** - 有三个主要的类加载器:Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader。 - 类加载过程包括加载、连接(验证、准备、解析)、初始化、使用、卸载。 15. **Linux常用命令:** - `ls`, `cd`, `cp`, `mv`, `rm`: 文件操作命令。 - `ps`, `top`, `kill`: 进程相关命令。 - `grep`, `awk`, `sed`: 文本搜索和处理命令。 - `chmod`, `chown`: 修改文件权限和所有者命令。 - `df`, `du`: 查看磁盘使用情况。 - `ps aux | grep process_name`: 查看进程信息。 - `netstat`, `lsof`: 查看网络和文件打开情况。
投递智道网联科技(北京)有限公司等公司9个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务