29.异步和非阻塞
异步就是执行通知行为即可,不需要等待结果
非阻塞就是调用结果时的状态
同步和异步是指两个个体之间的关系
阻塞和非阻塞是指单个个体的当前状态
30.内置log是线程安全
内部存在先解锁再加锁的操作
如果并发场景下,临界区代码有非常耗时的操作,不防先把临界区解锁,等操作结束后再加锁,耗时操作的结果要放到非竞态数据里去
31.goroutine和线程的区别
一个是os_sys调度器调用的,一个是程序语句调用
前者的初始化生成占用资源为2KB,后者通常为2MB
前者没有线程标识等额外数据维护表,后者会有全局map维护标识
32.滑动窗口(计算机知识——网络技术)
通过限制窗口大小限定发送的数据包,
两种情况可在窗体大小为0也可继续在发送端发送数据报
1.紧急数据报(用户终止操作行为);2.1字节的报文告知接受方重新通知滑动窗口大小和想要接受的报文号
33.弹性扩缩容
弹性伸缩(Auto Scaling)根据您的业务需求和伸缩策略,为您自动调整计算资源CVM——包括硬件(CPU、内存),磁盘(系统盘、数据盘),网络
定时、周期、监控等方式
34.一个web框架,怎么设计,说一下步骤
1.先确认该框架需要服务的项目需求——从需求定位
2.确定功能项——罗列需求子项
3.确定框架语言、数据缓存和存储、协议通信解析序列化、部署相关、监控方案、分布式安排
4.环境准备
5.配置项抽离或者接口化、编码约束规范
6.通信数据校验
7.访问权限分离
8.业务逻辑
8.1common:通用代码模块
8.2config:配置项
8.3script:脚本化文件
8.4routing:路由模块
8.5middle:中间件模块
8.6result:结果返回模块,包括返回数据处理
8.7logic:具体逻辑模块
8.8log:日志模块
8.9db:数据存储模块
9.奔溃修复和兼容
35.什么是中间件
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信
36.orm的个人看法
orm = object_relation_mapping对象关系映射
主要是解决对象与关系数据库存在的互不匹配的现象的技术
简单来说就是怎么把业务数据转换为数据库数据的接口实现
37.了解net/http
查看模块源码最快捷
38.大数组中,使得某两个数的和为特定值
遍历一次数组,把k_v设入hash表中,然后查看当前hash中是否存在taget-v的值在hash表中,在的话记录下来
思路:因为k1.value + k2.value = target,那当一开始没有k1.value的时候,肯定没有k2.value,此时设当前值为k1.value,当访问k2.value的时候,肯定有k1.value
39.各个系统出问题怎么监控报警
使用第三方软件监控cvm
使用守护进程监控cvm
40.常用测试工具,压测工具,方法
本人没用过,搜出这些:siege、httpload测试吞吐、iperf测试带宽
GoConvey、vegeta
衡量web网络性能:n4qps,qps4n
41. 复杂的单元测试怎么测试
mock和stub
Mock:在测试包中创建一个结构体,满足某个外部依赖的接口interface{}
Stub:在测试包中创建一个模拟方法,用于