Fork me on GitHub
To the moon

A Coder,a Programmer,a Developer


  • Home

  • Tags

  • Categories

  • Archives

  • Search

面经整理3

Posted on 2018-12-14 | Edited on 2023-05-09 | In interview

部分题目来源:美团 java 后台 哈尔滨现场面试面经

1. 数据库主从同步、读写分离

主要用来提升数据库的并发负载能力。

  • 数据的热备;
  • 架构的扩展;
  • 支持更大的并发;

主从复制的步骤:

  1. 从库生成两个线程,一个 IO 线程,一个 SQL 线程;
  2. IO 线程去请求主库的 binlog,并将得到的 binlog 日志写入 relay log 文件中。主库会生成一个 binlog dump 线程,用来给从库的 IO 线程传 binlog;
    • binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息(查询不会有记录,只记录增删改)。在 my.cnf 中增加log_bin参数即可开启。
  3. SQL 线程,会读取 relay log 文件中的日志(从 Exec_Master_Log_Pos 位置开始执行),并解析成具体操作,来实现主从的操作一致,而最终数据一致。

缺点:

  1. 数据的实时性较差;
  2. 数据量大时,同步效率差;
  3. 同时连接多个数据库,容易引起混乱;
  4. 读具有高性能高可靠性和可伸缩。只读服务器因为没有写操作,大大减轻磁盘 IO 等性能问题;多个只读服务器可以采用负载均衡的方式实现可伸缩性。
  5. 写数据的分配一般采用哈希映射。
Read more »

面经整理2

Posted on 2018-12-13 | Edited on 2023-05-09 | In interview

美团一面

1. 判断回文

  1. 字符串转置,然后逐位比较;
  2. 字符串转置,直接 equals 比较;
  3. for 循环 length/2 次,首位和末尾逐次比较;

2. jvm,讲讲gc

jvm 将内存划分为:方法区、堆区、虚拟机栈、本地方法栈、程序计数器。

Read more »

高并发笔记(1)

Posted on 2018-12-10 | Edited on 2023-05-09 | In notes

多线程还是多看多理解,就不做笔记了吧,以下是重点的截图。

Read more »

interview(1)

Posted on 2018-12-07 | Edited on 2023-05-09 | In interview

网易考拉 java 凉面面经

1. 同步 异步 非阻塞 阻塞 bio nio aio

这题问的是网络 IO 模型。

以 IO 的读数据(read)举例,会经历两个阶段:
1)等待数据准备。
2)将数据从内核拷贝到进程中。

IO 模型主要分为五种:

Read more »

负载均衡(1)

Posted on 2018-11-28 | Edited on 2023-05-09 | In notes

1. 负载均衡技术介绍

  1. HTTP 重定向负载均衡
  2. DNS 域名解析负载均衡
  3. 反向代理负载均衡
  4. IP 负载均衡
  5. 数据链路层负载均衡
Read more »

大型网站技术架构——读书笔记(1)

Posted on 2018-11-25 | Edited on 2023-05-09 | In notes

《大型网站技术架构——核心原理与案例分析》 李智慧

读书笔记(1)

1. 技术演化

  1. 最初是应用程序、文件、数据库都在同一台服务器上完成最简单的网站结构。
  2. 为解决存储空间不足的问题,出现应用服务器、文件服务器、数据库服务器职责分开的情况。
    • 应用服务器主要处理业务逻辑,需要更快更强的 CPU;
    • 文件服务器需要存储用户上传的文件,需要更大的硬盘;
    • 数据库服务器需要快速磁盘检索和数据缓存,所以需要更快的硬盘和更大的内存。
      • 网站使用的缓存分为两种:应用服务器上的本地缓存(特点:响应快,但数据量小,可能跟程序争用内存资源)、缓存在分布式缓存服务器上的远程缓存(可采用集群的方式,不受内存容量限制)。
Read more »

tinySpring-Aop-分析笔记(2)

Posted on 2018-11-17 | Edited on 2023-05-09 | In spring

tinySpring Aop 分析笔记(2)

项目学习地址:code4craft/tiny-spring

step-8-invite-pointcut-and-aspectj

  • step-8 新增了对AspectJExpressionPointcut这个类。
    • 它使用 AspectJ 表达式进行匹配。
    • 实现了Pointcut, ClassFilter, MethodMatcher三个接口。
    • 首先拿到一个PointcutParser,是用来解析 expression 的。
    • 解析传入的expression,拿到一个PointcutExpression的实现类。
    • ClassFilter 表示与表达式匹配的类;
    • MethodMatcher 查找与表达式匹配的方法;
    • Pointcut 表示获取的是方法还是类。
Read more »

tiny-spring-Aop 分析笔记(1)

Posted on 2018-11-16 | Edited on 2023-05-09 | In spring

tinySpring Aop 分析笔记(1)

项目学习地址:code4craft/tiny-spring

step-7-method-interceptor-by-jdk-dynamic-proxy

step 7 针对有接口的情况,采用 jdk 动态代理的方式实现 AOP。

另一种情况是:无接口时,创建子类,然后进行增强(调用父类的方法),实现动态代理的实现。即 cglib 动态代理。

Read more »

Aoot examination

Posted on 2018-11-13 | Edited on 2023-05-09 | In examination

aoot examination

1. 接口和抽象类的区别

  • 接口是对动作的抽象(这个对象能做什么),抽象类是对根源的抽象(这个对象是什么)。
  • 两者都不能直接实例化,对接口实例化时,接口变量必须指向一个类对象(此类对象必须实现了所有的接口方法);对抽象类实例化时,抽象类变量必须指向一个子类对象(此子类对象必须实现了所有的抽象方法)。注:如果方法不能全部被类 A 实现,那么类 A 必然是抽象类。
  • 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  • 抽象方法要被实现,所以不能是静态的,也不能是私有的。
Read more »

UML(7)

Posted on 2018-11-13 | Edited on 2023-05-09 | In UML

面向对象系统分析与设计(7)

1. 面向对象的六大设计原则

  1. 单一职责,single responsibility principle,SRP
    • 一个类,只做一件事。
  2. 开闭原则,open close principle,OCP
    • 对扩展开放,对修改封闭,保护既有系统。
    • 是 OO 设计的真正核心。
  3. 里氏替换原则,liskov substitution principle,LSP
    • 子类可以拓展父类的功能,但不能修改父类原有的功能。
  4. 接口隔离原则,interface segregation principle,ISP
    • 接口间的依赖性要小;比如一个类要实现某功能时,如果接入接口 A 和接口 B,然而只有 A 的功能是必须的,但因为 A 和 B 的依赖性,接入 B 是完全没有必要的,修改的办法就是降低 A、B 间的依赖。
  5. 迪米特原则,law of demeter,LOD
    • 陌生的类不要作为局部变量的形式出现在类的内部,耦合性会变高。
  6. DIP原则,dependency inversion principle。
    • 模块设计、细节和策略应该依赖于抽象,抽象的稳定性决定了系统的稳定性。
    • 变量不应该持有指向具体类的指针或引用。
    • 类不应该从具体类派生。
    • 任何方法都不应该覆写它的任何基类中已经实现了的方法。
Read more »
1…91011…16

Harrison Lee / Email (harrisonli60@163.com)

It is never too late to learn a new skill, even a challenging one.

157 posts
24 categories
35 tags
© 2026 Harrison Lee / Email (harrisonli60@163.com)
Powered by Hexo v6.3.0
|
Theme – NexT.Mist v7.0.0
|