面向对象思想
类与对象
接口与实现
继承与封装
不可变对象
泛型
类与对象
类的成员变量 -> 对象状态
类的成员函数 -> 对象行为
类的静态变量
类的静态函数
成员变量或成员函数当一个类存在两个实例的时候,在逻辑上两个实例是这样的
而实际上在内存中它却是这样的,函数部分的代码是实Ӹ...
递归控制
循环控制
边界控制
数据结构 树
数据归纳法用于证明断言对所有自然数成立
证明对于N=1成立
证明N>1时:如果对于N-1成立,那么对于N成立
递归控制如何证明递归函数正确执行?
数据归纳法->编程语言
递归书写方法
严格定义递归函数作用,包括函数,返回值,Side-effect(副作用)
先写一般,再后特殊(如,...
程序设计语言归类
数据类型
程序设计语言类型检查的方式归类
编译时:C,C++,Java,Go…让他在编译时能报错,更加健壮变量一旦定义了,他就一直是那个类型.如 int a,String b
运行时:Python,Perl,JavaScript,Ruby..运行时才会直到一个变量的具体类型
运行/编译的方式归类
编译为机器代码运行:C,C++速度快
编译为中间代码,在虚拟机运行:Java...
关系型数据库
基于关系代数理论
缺点:表结构不直观(二维表),实现复杂,速度慢
优点:健壮性高(外键等),社区庞大
分布式系统,对于健壮性的需求不高(高也没用,因为是相互独立的) -> NoSQL(健壮性低,性能高)
示例
product表中的外键设置到了category表.
汇总表:
1select * from product join category
结果为8条记录,4(product) * 2(category) = 8
12select * from product p join category con p.categoryId = c.categoryId
...
基础
数据链路层数据包,校验数据包是否正确
网络层路由器之间的传递,ip地址,ip协议
传输层可靠的传递,出错时重传的机制,
tcp协议先建立可靠连接后传输
udp协议
应用层是http还是email的协议
从历史发展的角度的分析网络的一层层协议
网络传输不可靠
丢包,重复包
出错
乱序
不安全
中间人攻击
窃取
...
知识点
进程 vs 线程
寻址
进程 vs 线程了解面试者侧重点 -> 进一步展开.如果面试者扯到内存就继续深入问内存
进程
比较独立,线程是进程的一部分,进程中包含多个线程
包含逻辑内存,进程之间内存互相独立
文件/网络句柄,进程间共享,可以多个进程打开同一个文件
线程
栈,把返回地址,局部变量等...
内存的类别有哪些
如何减少多线程内存分配之间的竞争
不同大小的内存是如何进行分配的
ByteBuf
内存与内存管理器的抽象
不同规格大小和不同类别的内存的分配策略
内存的回收过程
ByteBuf结构以及重要APIByteBuf的结构1234567* +-------------------+------------------+------------------+* | discardable bytes | readable bytes | writable bytes | 无效的 可以读的空间 可以写的空间* +---...
事件和异常的传播inBound事件的传播
何为inBound事件以及ChannelInboundHandler
ChannelRead事件的传播ChannelRead是典型的inbound事件,以他为例了解inbound事件的传播
SimpleInBoundHandler处理器
何为inBound事件以及ChannelInboundHandler
ChannelHandler的继承关系
ChannelInboundHandlerAdapter,ChannelOutboundHandlerAdapter.用户代码中常见.平时自定义channelHandler时都会继承与他们
ChannelHandler,所有处理器的抽象
ChannelHandlerAdapterChannelHandler的默认实现
ChannelInboundHandler,...
netty如何判断ChannelHandler类型的?
对于ChannelHandler的添加应该遵循什么样的顺序?
用户手动触发事件传播,不同的触发方式有什么样的区别?
pipeline知识点
pipeline的初始化
服务端channel或客户端channel在什么时候初始化pipeline?初始化时会做什么
添加删除ChannelHandler
事件和异常的传播读写事件如何在pipeline中进行传播
pipeline初始化
pipeline在...
Netty是在哪里检测到有新连接接入的?
新连接是怎样注册到NioEventLoop线程的?
Netty新连接接入处理逻辑
检测新连接
服务端channel绑定的selector轮训出ACCEPT事件
创建NioSocketChannel
基于jdkChannel创建neety自己的NioSocketChannel,也就是客户端Channel
分配线程及注册selector
给这个客户端channel分配一个NioEventLoop,并把它注册到NioEventLoop的selector上,之后都由这个NioEventLoop进行管理
向s...