20180709 MARTES

Mathematics

I read the "The Calculus Lifesaver: All the Tools You Need to Excel at Calculus". And I learnt functions, diagrams and lines. This is the notes.

函数是将一个的对象转化为另外一个对象的规则。

一个函数必须给每个有效的输入指定唯一的输出。

  • 定义域: 起始对象的集合。

  • 上域: 可能输出的集合。

  • 值域: 所有可能的输出所组成的集合。值域是上域的一个子集。值域是实际输出的集合。

  • 闭区间: \([a,b\)] 等价于 \(a \leqslant x \leqslant b\),包含两端。

  • 开区间: \((a,b)\) 等价于 \(a < x < b\),不包含两端。

  • \([a, \infty)\) 等价于 \(a \leqslant x\)

反函数,如果 \(f(x) = y\),那么 \(f^{-1}(y) = x\)。

  • 偶函数: 对于 \(f\) 定义域里的所有 \(x\) 有 \(f(-x) = f(x)\)。偶函数的图像关于 \(y\) 轴具有镜面对称性。

  • 奇函数: 对于 \(f\) 定义域里的所有 \(x\) 有 \(f(-x) = -f(x)\)。奇函数的图像关于原点有 \(180°\) 的点对称性。

Algorithm

Plus One - LeetCode

Unresolved include directive in modules/ROOT/pages/20180709.adoc - include::https://raw.githubusercontent.com/diguage/leetcode/master/src/main/java/com/diguage/algorithm/leetcode/PlusOne.java[]

Container With Most Water - LeetCode

Unresolved include directive in modules/ROOT/pages/20180709.adoc - include::https://raw.githubusercontent.com/diguage/leetcode/master/src/main/java/com/diguage/algorithm/leetcode/ContainerWithMostWater.java[]

Review

My friend recommended a paper to me, How to Read a Paper. I read it and made a note.

This article outlines a practical and efficient three-pass method for reading research papers.

Each pass accomplishes specific goals and builds upon the previous pass: The first pass gives you a general idea about the paper. The second pass lets you grasp the paper’s content, but not its details. The third pass helps you understand the paper in depth.

The first pass

This pass should take about five to ten minutes and consists of the following steps:

  1. Carefully read the title, abstract, and introduction

  2. Read the section and sub-section headings, but ignore everything else

  3. Glance at the mathematical content (if any) to determine the underlying theoretical foundations

  4. Read the conclusions

  5. Glance over the references, mentally ticking off the ones you’ve already read

At the end of the first pass, you should be able to answer the five Cs:

  1. Category: What type of paper is this? A measurement paper? An analysis of an existing system? A description of a research prototype?

  2. Context: Which other papers is it related to? Which theoretical bases were used to analyze the problem?

  3. Correctness: Do the assumptions appear to be valid?

  4. Contributions: What are the paper’s main contributions?

  5. Clarity: Is the paper well written?

The second pass

In the second pass, read the paper with greater care, but ignore details such as proofs. It helps to jot down the key points, or to make comments in the margins, as you read.

  1. Look carefully at the figures, diagrams and other illustrations in the paper. Pay special attention to graphs. Are the axes properly labeled? Are results shown with error bars, so that conclusions are statistically significant? Common mistakes like these will separate rushed, shoddy work from the truly excellent.

  2. Remember to mark relevant unread references for further reading (this is a good way to learn more about the background of the paper).

The second pass should take up to an hour. After this pass, you should be able to grasp the content of the paper. You should be able to summarize the main thrust of the paper, with supporting evidence, to someone else. This level of detail is appropriate for a paper in which you are interested, but does not lie in your research speciality.

The third pass

The key to the third pass is to attempt to virtually re-implement the paper: that is, making the same assumptions as the authors, re-create the work. By comparing this re-creation with the actual paper, you can easily identify not only a paper’s innovations, but also its hidden failings and assumptions.

Moreover, you should think about how you yourself would present a particular idea.

This pass can take about four or five hours for beginners, and about an hour for an experienced reader.

Tip

I developed a application. It use the AsciiDoctor as a document template. I writed codes to convert AsciiDoctor documents to HTML documents. When I deployed it as a executable Jar, it threw a exception. I spent the whole day fixing the bug. At last, I found JRuby includes its own nested jar support, which assumes that the jruby-complete.jar is always directly available as a file in its own right.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <requiresUnpack>
            <dependency>
                <groupId>org.jruby</groupId>
                <artifactId>jruby-complete</artifactId>
            </dependency>
            <dependency>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctorj</artifactId>
            </dependency>
        </requiresUnpack>
    </configuration>
</plugin>

English

First, I keep on reciting 60 English sentences every day, including 6 new sentences and reviewing 54 sentences.

Second, I read the paper "How to Read a Paper", then I chose some word which I had not known before.

  1. academic

  2. academically

  3. acronym

  4. analytical

  5. appropriate

  6. appropriately

  7. citation

  8. cite

  9. concise

  10. constitute

  11. correspond

  12. correspondent

  13. corresponding

  14. definitive

  15. discipline

  16. disciplined

  17. estimated

  18. evidence

  19. implicit

  20. implicitly

  21. jot

  22. literature

  23. persevere

  24. pinpoint

  25. shoddy

  26. spectrum

  27. terminology

  28. thumbnail

Share

我大学老师给我发信息说,有个师妹明年研究生毕业,马上就要校招了,现在为找工作的事情很焦虑。希望我能她一些建议。

老师把我的微信给我师妹,然后晚上就打电话聊了半个小时。了解一些她的情况:中科院大学读研,物联网专业,明年毕业,没有方向,不知道该准备 Java 工程师,还是应该准备产品经理,想准备不知该怎么准备。了解完情况后,我就给出我的建议。

还有一个外部情况需要注意:秋招在即,九月份开始,最多到年底结束。准备时间不多。所以,我的个人建议是这样的:

先说一下 Java 需要准备东西

  1. 集合类,最基本使用,最好看懂源码。

  2. 并发编程

  3. 网络编程

  4. 反射与动态规划

  5. JVM 内存结构

  6. 垃圾回收算法

  7. 常用 GC 特点以及调休

  8. 字节码

  9. 类加载

  10. JSP & Servlet

  11. Spring

  12. MyBATIS

  13. SpringMVC

除此之外,还需要准备其他的基础知识:

  1. 网络协议

  2. 操作系统

  3. 数据库

  4. 数据结构与算法

这里面,任何一项都需要花费很长很长的时间去准备。从实际上来不及,或者说很难在短时间内做出出众的效果,这也就很难拿到 Offer。

相对于 Java 职位,个人认为产品经理就简单多了。

首先,关于产品方面的书籍很少,简单列几本最常见的:

两三个月的时间,差不多够把豆瓣上关于产品方面比较好的书都买来读一遍了。

除此之外,还可以关注一下“最美应用”中,获得设计奖的产品,多去把玩、体会产品设计的细节,形成自己的思路和方法论。

另外,还可以在淘宝上,花几块钱买一套培训机构的教学视频,休闲的时候,拿出来放一放权当做个补充,也可以当成休闲。

在大家都不知道一条明确的路时,稍微有点靠谱的路,努力往前走一走,也许你就已经超过别人了。这样,你在面试的时候,也许就可以胜出了。

当然,我也承认,我没有干过产品经理,不清楚具体应该准备什么。可以找个干产品经理的朋友再咨询咨询。

后话:师妹后来还是选择找 Java 方面的职位。我没有安利成功。😝

支付宝

微信

感谢您的支持,😜