面试官备份知识点

基础

  • java容器(HashMap)
  • JVM(类加载,垃圾收集算法)
  • 多线程-同步(AQS,sync)
  • IO(BIO,NIO)
  • Nginx(负载均衡)
  • Git
  • Linux(Kill ps-jps 排查问题 crontab linux 查看某个端口的连接数)

框架

  • Spring boot(设计模式,启动过程)
  • Mybatis(MyBatis面向Mapper编程工作原理)

中间件

  • MQ(消息重复消费)

  • Kafka

  • Redis(缓存穿透,缓存击穿,缓存雪崩,淘汰策略,落地策略)

    • RDB: 定时快照方式(snapshot)
    • AOF: 基于语句追加文件的方式

实际在进行备份时,Redis 主要依靠 rdbSave() 函数,然后有两个命令会调用这个函数 SAVE 和 BGSAVE,前者会同步调用,阻塞主进程导致会有短暂的 Redis-server 停止工作,后者会 fork 出子进程异步处理。
RPC(Dubbo )

数据库

  • mysql(事务的安全问题有哪些 锁级别分类)(索引失效)(Sql优化方式,深度分页)

    • READ-UNCOMMITTED(读未提交):** 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读
    • READ-COMMITTED(读已提交):** 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生
    • REPEATABLE-READ(可重复读):** 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生
    • SERIALIZABLE(可串行化):** 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读

熟悉常用设计模式

良好的、可扩展的代码一定会运用大量的模式来提高代码的灵活性,增强代码的可扩展性。对于OOP来说,SOLID原则和GoF23种设计模式是其中最经典和最基础的模式,我们需要熟练把握,并能举一反三。

  • SOLID原则
    • 单一职责原则
    • 开闭原则
    • 里氏替换原则
    • 接口隔离原则
    • 依赖反转原则
  • GoF23种设计模式
    • 单例模式
    • 模板模式
    • 策略模式
    • 组合模式
    • 享元模式
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
    • 门面模式
    • 构建者模式
    • 装饰模式
    • 观察者模式
    • 过滤器模式
    • 其他

具有良好的代码规范

  • 良好的代码规范可带来许多好处:
    • 提高代码可读性
    • 增加代码扩展性
    • 增强代码维护性
    • 提高团队协作能力

要养成良好的代码习惯,需要比较长时间的的训练、经验和实践,只有在真实项目中才能体会良好代码习惯带来的各项好处,也能避免不好代码带来的各项弊端。

良好的沟通能力和学习能力,热衷于技术

  • 有人说技术人员只需要技术厉害、能解决问题即可。但是我想说的是,不仅仅如此,良好的沟通能力和学习能力也是必不可少的。为什么这么说呢?
  • 首先,随着软件规模的扩大,软件参与人员将变得更多,如果团队内的人员没有好的沟通交流能力,将很难协作互助,产出实际需求的功能实现。
  • 当前技术好并不能代表将来技术好,当前技术差并不能代表将来技术差,学习是为将来技术好做出的最好铺垫和基石。
  • 而学习的动力又是什么呢?对技术的热情和追求!还记得阿里巴巴对人才需求比较看重的几点吗?还是好奇心、学习能力。

有性能优化经验的优先

对于Java开发来说,主要体现在以下几点:

  • 服务器性能优化
  • 数据库性能优化

有大型分布式、高并发、高负载、高可用系统设计开发经验,中间件开发经验者优先

  • 目前市面上很少有公司有大体量和高并发相关的业务,正是基于这一点,才会显示出这方面人才的可贵。以我的经验来说,只有了解并专业学习过这方面的知识,才会在机会或挑战来临的时候把握住,从而增强自己的实践实战能力。
  • 在做好公司本职工作之外,我们若能在开源社区贡献自己的一份力量,也会增加我们的闪光点和眼界。中间件,是最能体现基础是否扎实、专业知识广度深度是否足够的一个方面。

期望薪资

posted @ 2021-08-26 16:09  潮鸣s  阅读(75)  评论(0)    收藏  举报