reading skills

雅思阅读 词汇 + 语法 + 解题技巧 + 阅读量 语法 从句 非谓语 核心:同义替换 同义词 同义短语 同义句子(主动被动) 题型分类 1. 顺序题 题型内部的出题顺序 (一般为顺序) 判断 填空 图形填空 选词填空 回答问题 单选 句子匹配 2. 乱序题 段落匹配 Which paragraph contains 人名/学说/国家/公司等信息匹配 段落大意 Heading 3. 特殊题 选文章标题 Title/副标题 Subtitle 多选 平行做题法:三步走 预读题画关键词; 带着问题去读文章定位,文章只读一遍、各题型平行 做题; 对比答案句和题目进行解题 1. 预读题目圈关键词 做题顺序 顺序题 保持有两题已经预读 乱序题 预读所有题目,画关键词 特殊题 选标题:读完全文再做; 多选题: 预读题目 题目提供信息足够定位答案时,选项后面读;否则,预读选项。 画关键词 不画什么? 主旨词、高频词不画。 不画常见题干词,reference、account、mention、refer 无实际意义 不画每道题都有的内容、全文反复出现的词 画什么? 画时间、数字、大写专有名词、人名等 画有具体内容的实词 content words、不画没有具体内容的虚词 function words — of、it、is、does 画比较级、最高级、否定词(判断题) 画填空前的冠词、并列,可能有对应 注意不同题目之间的关联 逻辑词...

September 5, 2024

Refactor

本质上,重构就是在代码写完之后改进其设计。 如果你想给程序添加一个功能,但发现由于结构不佳导致代码不易修改,那么应该先重构,让它更容易加功能,然后再加功能。 正是需求的变化使得重构变得必要。 重构的技巧是以极小的步幅修改程序。一旦出错,也更容易被发现。 好代码的检验标准:它有多容易被修改。 总结: 高效且有条理的重构关键点是:小步快跑、让代码始终处于可工作的状态、微小改动最终会累积成更好的系统设计。重构不是“银弹”,更像“银钳子”——它能帮助你始终牢牢控制住代码。重构是一种工具。 1. 代码中的坏味道(Bad Smells) 1. 神秘命名(Mysterious Name) 计算机科学只有两件难事:缓存失效(cache invalidation) 以及命名(naming things)—— Phil Karlton 命名是编程中最难的两件事之一。因此,重命名大概也是最常用的重构手法:包括修改函数声明(用于重命名函数)、重命名变量、重命名字段。 2. 全局数据(Global Data) 封装变量(Wrapped Variables)。少量全局数据未必有害,但数量越多,处理起来的难度往往呈指数级上升。 3. 可变数据(Mutable Data) 封装变量可以确保所有数据更新操作都通过很少的几个函数完成,从而更易监控与演进。 如果一个变量在不同时间存放不同含义的东西,可以用“拆分变量(Split Variable)”把它拆成各司其职的多个变量,从而避免危险的更新操作。 使用“搬移语句(Move Statements)”与“提炼函数(Extract Function)”,尽量把逻辑从处理更新操作的代码里挪出去,把无副作用的代码与执行数据更新的代码分离开。 在设计 API 时,可以使用 命令-查询分离(Command-Query Separation, CQS) 来分离查询函数与修改函数。 尽早使用 移除设值函数(Remove Setting Method / Remove set-value functions) 来缩小变量的作用域。 4. 过长函数(Long Functions) 主动分解函数。 原则:每当我们觉得需要用注释解释某段代码时,就把需要解释的内容提炼成一个独立函数,并按“目的”命名(而不是按实现方式命名)。 什么样的函数算太长?超过 50 行?超过 70 行?关键不在于行数,而在于函数的“做什么(what)”与“怎么做(how)”之间的语义距离有多远。 如何判断应该提炼哪段代码?一个好技巧是去找注释:注释往往提示了“做什么”与“怎么做”的语义距离。 条件表达式和循环也常常是需要提炼的信号。 条件表达式可以通过分解条件(Extract/Decompose Conditional)来处理。 对于巨大的 switch,每个分支都应该通过提炼函数变成一次独立的函数调用。 如果存在多个 switch 都基于同一个条件进行分支选择,应考虑用多态替换条件表达式(Replace Conditional with Polymorphism)。...

September 5, 2024

speaking skills

1. General Intro to IELTS Speaking Test Introductory Frame Full Name English Name Country The Process Part1 4-5 min, 3 topics, 9 questions Questions about yourself Topics to do with daily life Is there anything you don’t like about your living area? What do you study? Which do you prefer, Saturday or Sunday? Examiner can ONLY: repeat question ask you to elaborate Examiner CANNOT: explain create new questions Part2 3-4 min, 1 min for notes, 1-2 min to talk Can look at topic card and notes while speaking...

September 5, 2024

重构(中文)

Thinking… We just translate sentence. Keep markdown bold. Should be Chinese: “基本上,重构就是在代码已写完后改进其设计。” Ensure preserve markdown. …done thinking. 基本上,重构就是在代码已写完后改进其设计。 Thinking… We just translate text to Simplified Chinese. Keep Markdown. There’s only a paragraph. No code fences or inline code. So translate: “If you want to add a feature to a program, but find that the code isn’t easy to change due to a lack of good structure, refactor that program first so that it’s easier to add the feature, and then add the feature....

September 5, 2024

Redis Interview

What is Redis pipelining? Pipelining is a technique used to send multiple commands to the server without waiting for the replies, and then reading the replies in a single step. Explain Redis transactions. Redis transactions allow the execution of a group of commands in a single step. Key properties: All commands in a transaction are serialized and executed sequentially Either all or none of the commands are processed Redis transactions are atomic How does Redis implement master-slave replication?...

September 1, 2024