这份资料是京东在2016年针对研发工程师笔试的一份题目及答案,涵盖了数据库、分布式存储系统、数据结构和编程语言等多个方面的知识点。以下是这些知识点的详细解释:
1. **MySQL与NULL处理**:
- 在MySQL中,NULL表示未知或者不存在的值,它不等于任何其他值,包括NULL本身。因此,`NULL != NULL` 是正确的。
- 对于比较运算符,如`<`, `>`, `!=`,它们都不适用于NULL值,因为NULL的含义是未知,所以`NULL < value`或`NULL > value`都是不确定的。
- 当进行`NULL`与数字0的比较时,`NULL`也不等于0。
2. **Google File System (GFS)**:
- GFS是一种分布式文件系统,主要设计用于大规模数据处理。它的核心组件包括GFS Master和Chunk Server。
- Chunk Server负责存储数据块(chunks),而GFS Master管理元数据,如文件到chunk的映射。
- GFS Master与Chunk Server之间的通信可能涉及到数据同步、心跳检测等操作。
3. **数据结构:LRU缓存策略**:
- LRU(Least Recently Used)是最常用的页面替换策略,当内存满时,最近最少使用的页面将被替换出去。
- 一个具有容量限制的LRU缓存,如果新的元素进入且缓存已满,会将最久未使用的元素剔除。
- 示例中的LRU缓存问题涉及到如何根据给定的访问序列决定哪些元素应被替换。
4. **Java编程**:
- 在Java中,字符串是不可变的。`str += ' a'`会创建一个新的字符串对象,而不是在原字符串上添加字符。
- `str.length()`返回字符串的长度,不包含尾部的空格或换行符。
- 将`int`类型的值赋给`str`是不允许的,因为Java中字符串和整数是不同类型的,需要使用`Integer.toString(int)`进行转换。
- `str=100`和`str=str+100`都会报编译错误,因为它们试图将整数值赋给字符串类型变量。
这份资料对于准备IT企业研发工程师面试或笔试的求职者来说,是一个很好的学习资源,涵盖了数据库理论、分布式系统原理以及编程语言的基础知识,有助于提升技术能力。通过深入理解和实践这些知识点,可以提高在实际工作中解决问题的能力。