"计算机网络-awr1642引脚说明"
在计算机网络中,TCP/IP协议栈是一个重要的概念,它定义了网络通信的层次结构。TCP(传输控制协议)位于这一模型的第四层,即传输层,主要负责确保数据的可靠传输,通过建立连接、确认应答、流量控制和拥塞控制等机制来保证数据的正确性。IP(因特网协议)则位于第三层,网络层,其主要任务是实现数据包的路由和寻址,确保数据能够从源主机发送到目的主机。HTTP(超文本传输协议)属于应用层协议,用于定义Web浏览器和服务器之间的通信规则,主要用于传输HTML文档。
在Java开发中,面试常常会涉及到基础知识,例如:
1. 重写equals()方法时,通常也需要重写hashcode()方法,这是因为equals()方法用于判断两个对象是否相等,而hashcode()方法则影响对象在哈希表(如HashMap)中的存储位置。如果两个对象相等(根据equals()),那么它们的hashcode()应该相同,以保持哈希表的正确性。
2. Map的分类包括HashMap、TreeMap、LinkedHashMap等。HashMap提供快速的查找性能,基于哈希表;TreeMap按照键的自然顺序或自定义比较器进行排序;LinkedHashMap则保留插入顺序或访问顺序。
3. 若不重写Object的hashCode()方法,默认的实现会返回对象的内存地址的一个散列值,这通常会导致不同的对象得到不同的哈希码,不利于使用在哈希表中。
4. == 操作符用于比较两个变量的引用是否指向同一个对象。对于基本类型,它直接比较数值;对于对象,它比较的是对象的内存地址。
5. 如果不重写equals(),它的行为将遵循Object类的定义,比较两个对象的引用是否相同,而不是它们的内容是否相等。
6. Java 8引入的新特性包括Lambda表达式、函数式接口、Stream API、日期和时间API等。
7. Lambda表达式优点包括简洁的语法、提高代码可读性和可维护性,以及支持并行处理。缺点可能包括可读性对于不熟悉Lambda的人来说较低,以及无法捕获局部变量(除非它们是final或effectively final)。
8. 十进制数在内存中以二进制形式存储,整数部分和小数部分分别转换。
9. 数字运算的精度问题可能导致看似简单的减法结果出现额外的小数位,这是由于浮点数在计算机中的近似表示导致的。
10. Java支持的基本数据类型包括byte、short、int、long、float、double、char和boolean,自动装箱和拆箱是指将基本类型与对应的包装类之间进行转换的过程。
11. 值传递是将变量的副本传给方法,方法内部的修改不会影响原变量;引用传递则是将变量的引用传给方法,方法内部的修改会影响原变量。
12. 数组是固定大小的,访问速度快但插入和删除效率低;ArrayList是动态数组实现,提供了更多的便利操作,但访问速度相对较慢,适合元素数量频繁变动的情况。
13. 大O符号用于描述算法的时间复杂度,例如O(1)常数时间、O(n)线性时间等,不同的数据结构有不同的时间复杂度。
14. String在Java中不是基本数据类型,而是对象,这意味着每次对String的操作都会创建新的对象。
15. int是基本类型,直接存储数值;Integer是int的包装类,可以有null值,且支持方法调用。
16. String是不可变的,每次修改都会创建新对象;StringBuffer(或StringBuilder)是可变的,修改时不会创建新对象,适合大量拼接字符串的情况。
17. 输出特定编码的字符串,可以使用OutputStreamWriter或者PrintWriter,指定所需的字符编码。
18. int和Integer的区别与15点相同。
19. & 是按位与运算符,&& 是逻辑与运算符。& 可用于任何时候,而&&仅在短路评估中使用,即如果左侧为假,右侧表达式不会执行。
20. 跳出多重嵌套循环,可以使用break语句配合标签(label)。
21. Java和JavaScript虽然名字相似,但完全不同,Java是一种静态类型的、面向对象的编程语言,而JavaScript是动态类型的、主要用于网页交互的脚本语言。
22. 正则表达式是用于匹配字符串模式的工具,广泛应用于文本搜索、替换和验证。
23. Java通过java.util.regex包支持正则表达式,提供Pattern和Matcher类来编译和执行正则表达式。
24. Java和PHP都是Web开发的常用语言,Java更注重类型安全和面向对象,适合大型企业级应用;PHP则以简单易学和快速开发见长,常用于动态网站。