Logo ByteGopher
  • English
    中文
Logo Inverted Logo
  • Posts
  • Blog
  • CloudNative
  • Infrastructure
    • TimeSeriesDB
  • Kubernetes
  • Note C
  • Note Go
  • React
  • Tips
  • Nodus
  • Interview
  • Life
  • Linux
Hero Image

面试软技巧和总结 解决问题的能力 面对问题的态度 分析问题的方法 结构化分析问题 剔除干扰项 提问面试官 介绍一下所在的项目组 介绍一下所用的技术栈 对我的个人的意见和建议 后续学习 基础知识: 广度优先, 在兴趣点深入 编码能力: LeetCode, Google在线平台 面向对象和设计模式: 尝试重构自己写过的代码

January 1, 0001 Read
Hero Image

操作系统 进程和线程 进程: 进程中的内存是逻辑内存, 所有进程的逻辑内存之和要远远大于物理内存。 文件/网络句柄是共享的 线程 TLS: Thread Local Storage 缓冲区溢出 协程 进程之间不可以共享内存, 线程之间可以共享内存 进程间的通信方式: 管道,TCP/IP 比较优劣 线程间的通信方式: 共享内存 存储和寻址 存储 寻址空间 每个进程有自己的独立寻址空间 进程独立 32位 -> 4G 64位 -> ~10^19Bytes 1wPB 64位JVM -> 可以使用更大的内存,32 -> 需要重新编译 寻址 int n= *p; -> MOV EAX,[EBX] 把EBX寄存器中的数据读出,放入EAX 寄存器。n -> EAX, p -> EBX. 逻辑内存的大小与物理内存没有关系,只有操作系统有关。 操作系统的位数决定逻辑内存的位数。 逻辑内存映射到物理内存,数据不一定在物理内存中,也可能存在虚拟内存中。 当数据在虚拟内存中时候,不是只把逻辑内存对应的数据加载到物理内存,而是把数据所在的分页加载到物理内存。如果物理内存放不下,就交换一部分数据到虚拟内存。

January 1, 0001 Read
Hero Image

网络 网络基础 不可靠 丢包,重复包 出错 乱序 不安全 中间人攻击 窃取 篡改 滑动窗口 TCP协议中使用 维持发送方/接收方缓冲区 流量控制+拥塞控制 在传输过程中会调整窗口的大小 窗口的大小为0是合法的,(如果消息来不及处理可以设置为0) 不使用滑动窗口的话吞吐量会非常低 滑动窗口的Ack是有序的 如果丢ACk 会启动超时重传机制 WireShark 抓包 wireShark 抓包 网络例题 一个来回的时间:1500km/(2*10^5km/s) *2 = 0.015s 来回的次数至多:100s/0.015 = 6666.67次 每次传输至少: 100GB/6666.67 = 15M 数据链路层 网络层 传输层 TCP/UDP 应用层

January 1, 0001 Read
Hero Image

数据库 关系型数据库 基于关系代数理论 缺点: 表结构不直观,实现复杂速,速度慢 优点: 健壮性高,社区庞大 Product product_id product_name category_id price 4 toyota 2 100000 3 prosche 2 1000000 2 addidas 2 500 1 nike 600 category category_id category_name 2 automobile 1 shoes 1select * from product join category; -- 结果为笛卡尔积 8条记录 2 3select * from product p join category c on p.category_id=c.category_id; -- 按照id相等去连接, 忽略id 为空的记录 内连接 null的数据不会显示 4 5 6select * from product p left join category c on p.

January 1, 0001 Read
Hero Image

程序设计语言基础 程序设计语言 类型检查 编译时:C, C++, Java, Go 运行时: Python, Perl, JavaScript, Ruby 运行/编译 编译为机器代码运行:C, C++ 编译为中间代码,在虚拟机运行: Java, C# 解释执行: Python, Perl, JavaScript 编程范式 Programming Paradigm 面向过程: C, Visual Basic 面向对象: Java, C++, C#, Scala 函数式: Haskell, Erlang 数据类型和补码 数据类型 boolean, byte, char short, int, long, float, double String, Enum, Array Object… 补码 32位int 范围 -2^31 ~ 2^31 -1 11000...0 -2^32 21111...1 -1 30000...0 0 40111...1 2^31-1 5 6-1 + 1 = 0 浮点数与定点数 浮点数 (+/-)1.

January 1, 0001 Read
Hero Image

编码技巧 编码技巧概述 递归控制 循环控制 边界控制 数据结构 好的代码, 代码短,思路清晰 白板上写程序 先思考后写, 不要惧怕修改和重写 数学归纳法 用于证明断言对所有的自然数成立

January 1, 0001 Read
Hero Image

面向对象 面向对象思想 类与对象 接口与实现 继承与封装 不可变对象 泛型 从用户(终端用户,使用你代码的用户)的角度思考问题 摒弃完全基于逻辑的思维 类与对象 类的成员变量 -> 对象状态 类的成员函数 -> 对象行为 类的静态变量 类的静态函数 逻辑结构 1class Employee{ 2 void getPaid(BankEndPont bank){ 3 bank.payment(name, salary); // this 4 } 5} 类的静态变量和静态函数 没有this引用, 金泰变量全局唯一一份 普通函数引用静态变量和静态函数? OK 对象引用静态变量, 函数? 编译器警告 静态函数引用普通成员变量、 函数 ? 编译错误 对象的特殊函数 构造函数 equals Object 的equals方法默认判断是否为同一个对象 hashCode a.hashCode() == b.hashCode() «– a.equals(b) toString 接口与抽象类 为什么要有接口的概念 从用户(使用实现的代码)的角度看看问题 由编译器强制的一个模块间协作的合约(Contarct), 强制协作双方无法犯错 无成员变量 成员函数只有声明不能有实现 接口的声明 Java : interface C++: 一个全部是纯虚函数的类 Python/ 大部分动态语言: 依靠注释申明 抽象类 至少有一个抽象方法, 抽象方法没有实现;

January 1, 0001 Read
Hero Image

第8讲 设计模式 1. 单例模式 Singleton 设计模式的提出:博士论文 设计 vs 语言限制 更多的模式: 并发模式、架构模式 从架构的思想上看 Singleton优缺点 确保全局至多只有一个对象 用于: 构造缓慢的对象,需要统一管理的资源 缺点: 很多全局状态, 线程安全性 Singleton的创建(创建非常慢的对象) 双重锁模式 Double checked locking 作为Java 类的静态变量(程序初始化的时候就要创建出来) 使用框架提供的能力 依赖注入的框架(DI框架 Spring, Google Juice) 2. State 模式 变继承关系为组合关系 继承关系 描述is-a关系 复用,增加修改 不用用继承关系来实现复用 使用设计模式实现复用 如果 Employee 升级成了 Manager ? 新建成一个Manager, 原先的引用应该被回收。 或者使用state模式 3. Decorator模式 装饰者模式 1interface Runable{ 2 void run(); 3} 如何实现LoggingRunable, TransactionRunable, …. 开始运行,运行结束,运行持续是时间 commit, roll back 4. 如何创建对象 编译时就要确定是创建哪一个对象

January 1, 0001 Read
Hero Image

高级知识点 1. 并行计算 将数据拆分到每个节点上 -> 如何拆分 每个节点并行的给出计算结果 -> 中间结果 将结果汇总 -> 如何汇总 2. 外部排序分析 如何排序100G个元素? 只能有一部分数据放到内存 归并排序 将数据分为左右两半,分别归并排序,再把两个有序数据归并 如何归并 归并节点的排序– K路归并 使用堆实现 Priority Queue **使用Iterable 接口 ** 不断获取下一个元素 元素存储/获取方法被抽象, 与归并节点无关 Iterable merge(List< Iterable> sortData); 3. 死锁分析 多线程 线程安全 加锁, 锁的粒度,性能 死锁分析 1void transfer(Account form, Account to, int amount){ 2 synchronized(form){ 3 synchronized(to){ 4 from.setAmount(for.getAmount() - amount); 5 to.setAmount(to.getAmount() + amount) 6 } 7 } 8} synchronized(form) -> 别的线程在等待from synchronized(to) -> 别的线程已经锁住了to

January 1, 0001 Read
Hero Image

imooc_React16 快速上手 实现TodoList react简介以及语法基础 react Fiber // React 16 之后的版本对应的框架 redux react 环境搭建 React 脚手架工具 create-react-app 1npx create-react-app todolist # create-react-app 2cd todolist 3yarn start # npm run start 什么是组件 component 简单的jsx语法 项目代码 1├── src 2│ ├── TodoItem.js 3│ ├── TodoList.js 4│ ├── index.js 5│ ├── serviceWorker.js 6│ └── style.css Index.js Index.js 是项目的入口 1import React from 'react'; 2import ReactDOM from 'react-dom'; 3import './style.css'; 4// 组件,大写字母开头 s 5import TodoList from './TodoList'; 6 7 8ReactDOM.

January 1, 0001 Read
Hero Image

3rd_数据库架构 5th_Linux

January 1, 0001 Read
Hero Image

January 1, 0001 Read
  • ««
  • «
  • 4
  • 5
  • 6
  • 7
  • 8
  • »
  • »»
Navigation
  • About
  • Skills
  • Recent Posts
  • My Story
Contact me:
  • renqiqiang@outlook.com

Stay up to date with email notification

By entering your email address, you agree to receive the newsletter of this website.

Toha Theme Logo Toha
© 2020-2022 Copyright.
Powered by Hugo Logo