精华内容
下载资源
问答
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    原理是什么Java语言哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类何不同?Java应用程序与小程序之间那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的...

    Java面试总结(2021优化版)已发布在个人微信公众号【技术人成长之路】,优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结,删除了低频问题,添加了一些常见面试题,对文章进行了精简优化,欢迎大家关注!😊😊

    【技术人成长之路】,助力技术人成长!更多精彩文章第一时间在公众号发布哦!

    文章目录

    Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…

    序号内容链接地址
    1Java基础知识面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104390612
    2Java集合容器面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104588551
    3Java异常面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104390689
    4并发编程面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104863992
    5JVM面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104390752
    6Spring面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397516
    7Spring MVC面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397427
    8Spring Boot面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397299
    9Spring Cloud面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397367
    10MyBatis面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/101292950
    11Redis面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/103522351
    12MySQL数据库面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104778621
    13消息中间件MQ与RabbitMQ面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104588612
    14Dubbo面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104390006
    15Linux面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104588679
    16Tomcat面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397665
    17ZooKeeper面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104397719
    18Netty面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/104391081
    19架构设计&分布式&数据结构与算法面试题(2020最新版)https://thinkwon.blog.csdn.net/article/details/105870730

    Java概述

    何为编程

    编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。

    为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

    什么是Java

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

    jdk1.5之后的三大版本

    • Java SE(J2SE,Java 2 Platform Standard Edition,标准版)
      Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为Java EE和Java ME提供基础。
    • Java EE(J2EE,Java 2 Platform Enterprise Edition,企业版)
      Java EE 以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web2.0应用程序。2018年2月,Eclipse 宣布正式将 JavaEE 更名为 JakartaEE
    • Java ME(J2ME,Java 2 Platform Micro Edition,微型版)
      Java ME 以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

    JVM、JRE和JDK的关系

    JVM
    Java Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

    JRE
    Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

    如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

    JDK
    Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就无需再单独安装JRE了。其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等

    JVM&JRE&JDK关系图

    什么是跨平台性?原理是什么

    所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

    实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。

    Java语言有哪些特点

    简单易学(Java语言的语法与C语言和C++语言很接近)

    面向对象(封装,继承,多态)

    平台无关性(Java虚拟机实现平台无关性)

    支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

    支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

    健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

    安全性

    什么是字节码?采用字节码的最大好处是什么

    字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

    采用字节码的好处

    Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

    先看下java中的编译器和解释器

    Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。

    Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。
    

    什么是Java程序的主类?应用程序和小程序的主类有何不同?

    一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。而在Java小程序中,这个主类是一个继承自系统类JApplet或Applet的子类。应用程序的主类不一定要求是public类,但小程序的主类要求必须是public类。主类是Java程序执行的入口点。

    Java应用程序与小程序之间有那些差别?

    简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟flash的小游戏类似。

    Java和C++的区别

    我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们Java和C++比呀!没办法!!!就算没学过C++,也要记下来!

    • 都是面向对象的语言,都支持封装、继承和多态
    • Java不提供指针来直接访问内存,程序内存更加安全
    • Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。
    • Java有自动内存管理机制,不需要程序员手动释放无用内存

    Oracle JDK 和 OpenJDK 的对比

    1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;

    2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的;

    3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到Oracle JDK就可以解决问题;

    4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;

    5. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;

    6. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。

    基础语法

    数据类型

    Java有哪些数据类型

    定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。

    分类

    • 基本数据类型
      • 数值型
        • 整数类型(byte,short,int,long)
        • 浮点类型(float,double)
      • 字符型(char)
      • 布尔型(boolean)
    • 引用数据类型
      • 类(class)
      • 接口(interface)
      • 数组([])

    Java基本数据类型图

    switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

    在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。从 Java5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

    用最有效率的方法计算 2 乘以 8

    2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。

    Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

    Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。

    float f=3.4;是否正确

    不正确。3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成 float f =3.4F;。

    short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗

    对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int型,需要强制转换类型才能赋值给 short 型。

    而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1);其中有隐含的强制类型转换。

    编码

    Java语言采用何种编码方案?有何特点?

    Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。

    注释

    什么Java注释

    定义:用于解释说明程序的文字

    分类

    • 单行注释
      格式: // 注释文字
    • 多行注释
      格式: /* 注释文字 */
    • 文档注释
      格式:/** 注释文字 */

    作用

    在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。

    注意事项:多行和文档注释都不能嵌套使用。

    访问修饰符

    访问修饰符 public,private,protected,以及不写(默认)时的区别

    定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

    分类

    private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
    default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
    protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
    public : 对所有类可见。使用对象:类、接口、变量、方法

    访问修饰符图

    运算符

    &和&&的区别

    &运算符有两种用法:(1)按位与;(2)逻辑与。

    &&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

    注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

    关键字

    Java 有没有 goto

    goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。

    final 有什么用?

    用于修饰类、属性和方法;

    • 被final修饰的类不可以被继承
    • 被final修饰的方法不可以被重写
    • 被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的

    final finally finalize区别

    • final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表
      示该变量是一个常量不能被重新赋值。
    • finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块
      中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
    • finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调
      用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的
      最后判断。

    this关键字的用法

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。

    this的用法在java中大体可以分为3种:

    1.普通的直接引用,this相当于是指向当前对象本身。

    2.形参与成员名字重名,用this来区分:

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    

    3.引用本类的构造函数

    class Person{
        private String name;
        private int age;
        
        public Person() {
        }
     
        public Person(String name) {
            this.name = name;
        }
        public Person(String name, int age) {
            this(name);
            this.age = age;
        }
    }
    

    super关键字的用法

    super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

    super也有三种用法:

    1.普通的直接引用

    与this类似,super相当于是指向当前对象的父类的引用,这样就可以用super.xxx来引用父类的成员。

    2.子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分

    class Person{
        protected String name;
     
        public Person(String name) {
            this.name = name;
        }
     
    }
     
    class Student extends Person{
        private String name;
     
        public Student(String name, String name1) {
            super(name);
            this.name = name1;
        }
     
        public void getInfo(){
            System.out.println(this.name);      //Child
            System.out.println(super.name);     //Father
        }
     
    }
    
    public class Test {
        public static void main(String[] args) {
           Student s1 = new Student("Father","Child");
           s1.getInfo();
     
        }
    }
    

    3.引用父类构造函数

    3、引用父类构造函数

    • super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
    • this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

    this与super的区别

    • super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
    • this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
    • super()和this()类似,区别是,super()在子类中调用父类的构造方法,this()在本类内调用本类的其它构造方法。
    • super()和this()均需放在构造方法内第一行。
    • 尽管可以用this调用一个构造器,但却不能调用两个。
    • this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
    • this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
    • 从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

    static存在的主要意义

    static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象,也能使用属性和调用方法

    static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

    为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。因此,很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。

    static的独特之处

    1、被static修饰的变量或者方法是独立于该类的任何对象,也就是说,这些变量和方法不属于任何一个实例对象,而是被类的实例对象所共享

    怎么理解 “被类的实例对象所共享” 这句话呢?就是说,一个类的静态成员,它是属于大伙的【大伙指的是这个类的多个对象实例,我们都知道一个类可以创建多个实例!】,所有的类对象共享的,不像成员变量是自个的【自个指的是这个类的单个实例对象】…我觉得我已经讲的很通俗了,你明白了咩?

    2、在该类被第一次加载的时候,就会去加载被static修饰的部分,而且只在类第一次使用时加载并进行初始化,注意这是第一次用就要初始化,后面根据需要是可以再次赋值的。

    3、static变量值在类加载的时候分配空间,以后创建类对象的时候不会重新分配。赋值的话,是可以任意赋值的!

    4、被static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建对象,也可以去访问。

    static应用场景

    因为static是被类的实例对象所共享,因此如果某个成员变量是被所有对象所共享的,那么这个成员变量就应该定义为静态变量

    因此比较常见的static应用场景有:

    1、修饰成员变量 2、修饰成员方法 3、静态代码块 4、修饰类【只能修饰内部类也就是静态内部类】 5、静态导包

    static注意事项

    1、静态只能访问静态。 2、非静态既可以访问非静态的,也可以访问静态的。

    流程控制语句

    break ,continue ,return 的区别及作用

    break 跳出总上一层循环,不再执行循环(结束当前的循环体)

    continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)

    return 程序返回,不再执行下面的代码(结束当前的方法 直接返回)

    在 Java 中,如何跳出当前的多重嵌套循环

    在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如:

    public static void main(String[] args) {
        ok:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (j == 5) {
                    break ok;
                }
    
            }
        }
    }
    

    面向对象

    面向对象概述

    面向对象和面向过程的区别

    面向过程

    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

    缺点:没有面向对象易维护、易复用、易扩展

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护

    缺点:性能比面向过程低

    面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

    面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

    面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。

    面向对象三大特性

    面向对象的特征有哪些方面

    面向对象的特征主要有以下几个方面

    抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

    封装

    封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

    继承

    继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码。

    关于继承如下 3 点请记住:

    1. 子类拥有父类非 private 的属性和方法。

    2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

    3. 子类可以用自己的方式实现父类的方法。(以后介绍)。

    多态

    所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。

    在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。

    其中Java 面向对象编程三大特性:封装 继承 多态

    封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

    继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承可以提高代码复用性。继承是多态的前提。

    关于继承如下 3 点请记住

    1. 子类拥有父类非 private 的属性和方法。

    2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

    3. 子类可以用自己的方式实现父类的方法。

    多态性:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

    在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。

    方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

    一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:

    • 方法重写(子类继承父类并重写父类中已有的或抽象的方法);
    • 对象造型(用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

    什么是多态机制?Java语言是如何实现多态的?

    所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

    多态分为编译时多态和运行时多态。其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。

    多态的实现

    Java实现多态有三个必要条件:继承、重写、向上转型。

    继承:在多态中必须存在有继承关系的子类和父类。

    重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

    向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

    只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

    对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

    面向对象五大基本原则是什么(可选)

    • 单一职责原则SRP(Single Responsibility Principle)
      类的功能要单一,不能包罗万象,跟杂货铺似的。
    • 开放封闭原则OCP(Open-Close Principle)
      一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。
    • 里式替换原则LSP(the Liskov Substitution Principle LSP)
      子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
    • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。
    • 接口分离原则ISP(the Interface Segregation Principle ISP)
      设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

    类与接口

    抽象类和接口的对比

    抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。

    从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

    相同点

    • 接口和抽象类都不能实例化
    • 都位于继承的顶端,用于被其他实现或继承
    • 都包含抽象方法,其子类都必须覆写这些抽象方法

    不同点

    参数抽象类接口
    声明抽象类使用abstract关键字声明接口使用interface关键字声明
    实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现子类使用implements关键字来实现接口。它需要提供接口中所有声明的方法的实现
    构造器抽象类可以有构造器接口不能有构造器
    访问修饰符抽象类中的方法可以是任意访问修饰符接口方法默认修饰符是public。并且不允许定义为 private 或者 protected
    多继承一个类最多只能继承一个抽象类一个类可以实现多个接口
    字段声明抽象类的字段声明可以是任意的接口的字段默认都是 static 和 final 的

    备注:Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间的差异。

    现在,我们可以为接口提供默认实现的方法了,并且不用强制子类来实现它。

    接口和抽象类各有优缺点,在接口和抽象类的选择上,必须遵守这样一个原则:

    • 行为模型应该总是通过接口而不是抽象类定义,所以通常是优先选用接口,尽量少用抽象类。
    • 选择抽象类的时候通常是如下情况:需要定义子类的行为,又要为子类提供通用的功能。

    普通类和抽象类有哪些区别?

    • 普通类不能包含抽象方法,抽象类可以包含抽象方法。
    • 抽象类不能直接实例化,普通类可以直接实例化。

    抽象类能使用 final 修饰吗?

    不能,定义抽象类就是让其他类继承的,如果定义为 final 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类

    创建一个对象用什么关键字?对象实例与对象引用有何不同?

    new关键字,new创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。一个对象引用可以指向0个或1个对象(一根绳子可以不系气球,也可以系一个气球);一个对象可以有n个引用指向它(可以用n条绳子系住一个气球)

    变量与方法

    成员变量与局部变量的区别有哪些

    变量:在程序执行的过程中,在某个范围内其值可以发生改变的量。从本质上讲,变量其实是内存中的一小块区域

    成员变量:方法外部,类内部定义的变量

    局部变量:类的方法中的变量。

    成员变量和局部变量的区别

    作用域

    成员变量:针对整个类有效。
    局部变量:只在某个范围内有效。(一般指的就是方法,语句体内)

    存储位置

    成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
    局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。当方法调用完,或者语句结束后,就自动释放。

    生命周期

    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:当方法调用完,或者语句结束后,就自动释放。

    初始值

    成员变量:有默认初始值。

    局部变量:没有默认初始值,使用前必须赋值。

    使用原则

    在使用变量时需要遵循的原则为:就近原则
    首先在局部范围找,有就使用;接着在成员位置找。

    在Java中定义一个不做事且没有参数的构造方法的作用

    Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。

    在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

    帮助子类做初始化工作。

    一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?

    主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。

    构造方法有哪些特性?

    名字与类名相同;

    没有返回值,但不能用void声明构造函数;

    生成类的对象时自动执行,无需调用。

    静态变量和实例变量区别

    静态变量: 静态变量由于不属于任何实例对象,属于类的,所以在内存中只会有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间。

    实例变量: 每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。

    静态变量与普通变量区别

    static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

    还有一点就是static成员变量的初始化顺序按照定义的顺序进行初始化。

    静态方法和实例方法有何不同?

    静态方法和实例方法的区别主要体现在两个方面:

    1. 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
    2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制

    在一个静态方法内调用一个非静态成员为什么是非法的?

    由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员。

    什么是方法的返回值?返回值的作用是什么?

    方法的返回值是指我们获取到的某个方法体中的代码执行后产生的结果!(前提是该方法可能产生结果)。返回值的作用:接收出结果,使得它可以用于其他的操作!

    内部类

    什么是内部类?

    在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。

    内部类的分类有哪些

    内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类

    静态内部类

    定义在类内部的静态类,就是静态内部类。

    public class Outer {
    
        private static int radius = 1;
    
        static class StaticInner {
            public void visit() {
                System.out.println("visit outer static  variable:" + radius);
            }
        }
    }
    

    静态内部类可以访问外部类所有的静态变量,而不可访问外部类的非静态变量;静态内部类的创建方式,new 外部类.静态内部类(),如下:

    Outer.StaticInner inner = new Outer.StaticInner();
    inner.visit();
    
    成员内部类

    定义在类内部,成员位置上的非静态类,就是成员内部类。

    public class Outer {
    
        private static  int radius = 1;
        private int count =2;
        
         class Inner {
            public void visit() {
                System.out.println("visit outer static  variable:" + radius);
                System.out.println("visit outer   variable:" + count);
            }
        }
    }
    

    成员内部类可以访问外部类所有的变量和方法,包括静态和非静态,私有和公有。成员内部类依赖于外部类的实例,它的创建方式外部类实例.new 内部类(),如下:

    Outer outer = new Outer();
    Outer.Inner inner = outer.new Inner();
    inner.visit();
    
    局部内部类

    定义在方法中的内部类,就是局部内部类。

    public class Outer {
    
        private  int out_a = 1;
        private static int STATIC_b = 2;
    
        public void testFunctionClass(){
            int inner_c =3;
            class Inner {
                private void fun(){
                    System.out.println(out_a);
                    System.out.println(STATIC_b);
                    System.out.println(inner_c);
                }
            }
            Inner  inner = new Inner();
            inner.fun();
        }
        public static void testStaticFunctionClass(){
            int d =3;
            class Inner {
                private void fun(){
                    // System.out.println(out_a); 编译错误,定义在静态方法中的局部类不可以访问外部类的实例变量
                    System.out.println(STATIC_b);
                    System.out.println(d);
                }
            }
            Inner  inner = new Inner();
            inner.fun();
        }
    }
    

    定义在实例方法中的局部类可以访问外部类的所有变量和方法,定义在静态方法中的局部类只能访问外部类的静态变量和方法。局部内部类的创建方式,在对应方法内,new 内部类(),如下:

     public static void testStaticFunctionClass(){
        class Inner {
        }
        Inner  inner = new Inner();
     }
    
    匿名内部类

    匿名内部类就是没有名字的内部类,日常开发中使用的比较多。

    public class Outer {
    
        private void test(final int i) {
            new Service() {
                public void method() {
                    for (int j = 0; j < i; j++) {
                        System.out.println("匿名内部类" );
                    }
                }
            }.method();
        }
     }
     //匿名内部类必须继承或实现一个已有的接口 
     interface Service{
        void method();
    }
    

    除了没有名字,匿名内部类还有以下特点:

    • 匿名内部类必须继承一个抽象类或者实现一个接口。
    • 匿名内部类不能定义任何静态成员和静态方法。
    • 当所在的方法的形参需要被匿名内部类使用时,必须声明为 final。
    • 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

    匿名内部类创建方式:

    new/接口{ 
      //匿名内部类实现部分
    }
    

    内部类的优点

    我们为什么要使用内部类呢?因为它有以下优点:

    • 一个内部类对象可以访问创建它的外部类对象的内容,包括私有数据!
    • 内部类不为同一包的其他类所见,具有很好的封装性;
    • 内部类有效实现了“多重继承”,优化 java 单继承的缺陷。
    • 匿名内部类可以很方便的定义回调。

    内部类有哪些应用场景

    1. 一些多算法场合
    2. 解决一些非面向对象的语句块。
    3. 适当使用内部类,使得代码更加灵活和富有扩展性。
    4. 当某个类除了它的外部类,不再被其他的类使用时。

    局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?

    局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final呢?它内部原理是什么呢?

    先看这段代码:

    public class Outer {
    
        void outMethod(){
            final int a =10;
            class Inner {
                void innerMethod(){
                    System.out.println(a);
                }
    
            }
        }
    }
    

    以上例子,为什么要加final呢?是因为生命周期不一致, 局部变量直接存储在栈中,当方法执行结束后,非final的局部变量就被销毁。而局部内部类对局部变量的引用依然存在,如果局部内部类要调用局部变量时,就会出错。加了final,可以确保局部内部类使用的变量与外层的局部变量区分开,解决了这个问题。

    内部类相关,看程序说出运行结果

    public class Outer {
        private int age = 12;
    
        class Inner {
            private int age = 13;
            public void print() {
                int age = 14;
                System.out.println("局部变量:" + age);
                System.out.println("内部类变量:" + this.age);
                System.out.println("外部类变量:" + Outer.this.age);
            }
        }
    
        public static void main(String[] args) {
            Outer.Inner in = new Outer().new Inner();
            in.print();
        }
    
    }
    

    运行结果:

    局部变量:14
    内部类变量:13
    外部类变量:12
    

    重写与重载

    构造器(constructor)是否可被重写(override)

    构造器不能被继承,因此不能被重写,但可以被重载。

    重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

    方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

    重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不同、顺序不同),与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分

    重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类(里氏代换原则);如果父类方法访问修饰符为private则子类中就不是重写。

    对象相等判断

    == 和 equals 的区别是什么

    == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)

    equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

    情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。

    情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。

    举个例子:

    public class test1 {
        public static void main(String[] args) {
            String a = new String("ab"); // a 为一个引用
            String b = new String("ab"); // b为另一个引用,对象的内容一样
            String aa = "ab"; // 放在常量池中
            String bb = "ab"; // 从常量池中查找
            if (aa == bb) // true
                System.out.println("aa==bb");
            if (a == b) // false,非同一对象
                System.out.println("a==b");
            if (a.equals(b)) // true
                System.out.println("aEQb");
            if (42 == 42.0) { // true
                System.out.println("true");
            }
        }
    }
    

    说明:

    • String中的equals方法是被重写过的,因为object的equals方法是比较的对象的内存地址,而String的equals方法比较的是对象的值。
    • 当创建String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个String对象。

    hashCode 与 equals (重要)

    HashSet如何检查重复

    两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?

    hashCode和equals方法的关系

    面试官可能会问你:“你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?”

    hashCode()介绍

    hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode()函数。

    散列表存储的是键值对(key-value),它的特点是:能根据“键”快速的检索出对应的“值”。这其中就利用到了散列码!(可以快速找到所需要的对象)

    为什么要有 hashCode

    我们以“HashSet 如何检查重复”为例子来说明为什么要有 hashCode

    当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现。但是如果发现有相同 hashcode 值的对象,这时会调用 equals()方法来检查 hashcode 相等的对象是否真的相同。如果两者相同,HashSet 就不会让其加入操作成功。如果不同的话,就会重新散列到其他位置。(摘自我的Java启蒙书《Head first java》第二版)。这样我们就大大减少了 equals 的次数,相应就大大提高了执行速度。

    hashCode()与equals()的相关规定

    如果两个对象相等,则hashcode一定也是相同的

    两个对象相等,对两个对象分别调用equals方法都返回true

    两个对象有相同的hashcode值,它们也不一定是相等的

    因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖

    hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

    对象的相等与指向他们的引用相等,两者有什么不同?

    对象的相等 比的是内存中存放的内容是否相等而 引用相等 比较的是他们指向的内存地址是否相等。

    值传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

    是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的

    为什么 Java 中只有值传递

    首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按值调用(call by value)表示方法接收的是调用者提供的值,而按引用调用(call by reference)表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值。 它用来描述各种程序设计语言(不只是Java)中方法参数传递方式。

    Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。

    下面通过 3 个例子来给大家说明

    example 1

    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
    
        swap(num1, num2);
    
        System.out.println("num1 = " + num1);
        System.out.println("num2 = " + num2);
    }
    
    public static void swap(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
    
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
    

    结果

    a = 20
    b = 10
    num1 = 10
    num2 = 20
    

    解析

    img

    在swap方法中,a、b的值进行交换,并不会影响到 num1、num2。因为,a、b中的值,只是从 num1、num2 的复制过来的。也就是说,a、b相当于num1、num2 的副本,副本的内容无论怎么修改,都不会影响到原件本身。

    通过上面例子,我们已经知道了一个方法不能修改一个基本数据类型的参数,而对象引用作为参数就不一样,请看 example2.

    example 2

        public static void main(String[] args) {
            int[] arr = { 1, 2, 3, 4, 5 };
            System.out.println(arr[0]);
            change(arr);
            System.out.println(arr[0]);
        }
    
        public static void change(int[] array) {
            // 将数组的第一个元素变为0
            array[0] = 0;
        }
    

    结果

    1
    0
    

    解析

    img

    array 被初始化 arr 的拷贝也就是一个对象的引用,也就是说 array 和 arr 指向的时同一个数组对象。 因此,外部对引用对象的改变会反映到所对应的对象上。

    通过 example2 我们已经看到,实现一个改变对象参数状态的方法并不是一件难事。理由很简单,方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。

    很多程序设计语言(特别是,C++和Pascal)提供了两种参数传递的方式:值调用和引用调用。有些程序员(甚至本书的作者)认为Java程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。由于这种误解具有一定的普遍性,所以下面给出一个反例来详细地阐述一下这个问题。

    example 3

    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Student s1 = new Student("小张");
            Student s2 = new Student("小李");
            Test.swap(s1, s2);
            System.out.println("s1:" + s1.getName());
            System.out.println("s2:" + s2.getName());
        }
    
        public static void swap(Student x, Student y) {
            Student temp = x;
            x = y;
            y = temp;
            System.out.println("x:" + x.getName());
            System.out.println("y:" + y.getName());
        }
    }
    

    结果

    x:小李
    y:小张
    s1:小张
    s2:小李
    

    解析

    交换之前:

    img

    交换之后:

    img

    通过上面两张图可以很清晰的看出: 方法并没有改变存储在变量 s1 和 s2 中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝

    总结

    Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。

    下面再总结一下Java中方法参数的使用情况:

    • 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型》
    • 一个方法可以改变一个对象参数的状态。
    • 一个方法不能让对象参数引用一个新的对象。

    值传递和引用传递有什么区别

    值传递:指的是在方法调用时,传递的参数是按值的拷贝传递,传递的是值的拷贝,也就是说传递后就互不相关了。

    引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。

    Java包

    JDK 中常用的包有哪些

    • java.lang:这个是系统的基础类;
    • java.io:这里面是所有输入输出有关的类,比如文件操作等;
    • java.nio:为了完善 io 包中的功能,提高 io 包中性能而写的一个新包;
    • java.net:这里面是与网络有关的类;
    • java.util:这个是系统辅助类,特别是集合类;
    • java.sql:这个是数据库操作的类。

    import java和javax有什么区别

    刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部分。

    所以,实际上java和javax没有区别。这都是一个名字。

    IO流

    java 中 IO 流分为几种?

    • 按照流的流向分,可以分为输入流和输出流;
    • 按照操作单元划分,可以划分为字节流和字符流;
    • 按照流的角色划分为节点流和处理流。

    Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。

    • InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。
    • OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

    按操作方式分类结构图:

    IO-操作方式分类

    按操作对象分类结构图:

    IO-操作对象分类

    BIO,NIO,AIO 有什么区别?

    简答

    • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
    • NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
    • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

    详细回答

    • BIO (Blocking I/O): 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。在活动连接数不是特别高(小于单机1000)的情况下,这种模型是比较不错的,可以让每一个连接专注于自己的 I/O 并且编程模型简单,也不用过多考虑系统的过载、限流等问题。线程池本身就是一个天然的漏斗,可以缓冲一些系统处理不了的连接或请求。但是,当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量。
    • NIO (New I/O): NIO是一种同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,对应 java.nio 包,提供了 Channel , Selector,Buffer等抽象。NIO中的N可以理解为Non-blocking,不单纯是New。它支持面向缓冲的,基于通道的I/O操作方法。 NIO提供了与传统BIO模型中的 SocketServerSocket 相对应的 SocketChannelServerSocketChannel 两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。阻塞模式使用就像传统中的支持一样,比较简单,但是性能和可靠性都不好;非阻塞模式正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发
    • AIO (Asynchronous I/O): AIO 也就是 NIO 2。在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO模型。异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。查阅网上相关资料,我发现就目前来说 AIO 的应用还不是很广泛,Netty 之前也尝试使用过 AIO,不过又放弃了。

    Files的常用方法都有哪些?

    • Files. exists():检测文件路径是否存在。
    • Files. createFile():创建文件。
    • Files. createDirectory():创建文件夹。
    • Files. delete():删除一个文件或目录。
    • Files. copy():复制文件。
    • Files. move():移动文件。
    • Files. size():查看文件个数。
    • Files. read():读取文件。
    • Files. write():写入文件。

    反射

    什么是反射机制?

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

    静态编译和动态编译

    • **静态编译:**在编译时确定类型,绑定对象
    • **动态编译:**运行时确定类型,绑定对象

    反射机制优缺点

    • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。
    • 缺点: 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多。

    反射机制的应用场景有哪些?

    反射是框架设计的灵魂。

    在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架也大量使用到了反射机制。

    举例:①我们在使用JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序;②Spring框架也用到很多反射机制,最经典的就是xml的配置模式。Spring 通过 XML 配置模式装载 Bean 的过程:1) 将程序内所有 XML 或 Properties 配置文件加载入内存中; 2)Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息; 3)使用反射机制,根据这个字符串获得某个类的Class实例; 4)动态配置实例的属性

    Java获取反射的三种方法

    1.通过new对象实现反射机制 2.通过路径实现反射机制 3.通过类名实现反射机制

    public class Student {
        private int id;
        String name;
        protected boolean sex;
        public float score;
    }
    
    public class Get {
        //获取反射机制三种方式
        public static void main(String[] args) throws ClassNotFoundException {
            //方式一(通过建立对象)
            Student stu = new Student();
            Class classobj1 = stu.getClass();
            System.out.println(classobj1.getName());
            //方式二(所在通过路径-相对路径)
            Class classobj2 = Class.forName("fanshe.Student");
            System.out.println(classobj2.getName());
            //方式三(通过类名)
            Class classobj3 = Student.class;
            System.out.println(classobj3.getName());
        }
    }
    

    网络编程

    网络编程的面试题可以查看我的这篇文章重学TCP/IP协议和三次握手四次挥手,内容不仅包括TCP/IP协议和三次握手四次挥手的知识,还包括计算机网络体系结构,HTTP协议,get请求和post请求区别,session和cookie的区别等,欢迎大家阅读。

    常用API

    String相关

    字符型常量和字符串常量的区别

    1. 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符
    2. 含义上: 字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)
    3. 占内存大小 字符常量只占两个字节 字符串常量占若干个字节(至少一个字符结束标志)

    什么是字符串常量池?

    字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用。

    String 是最基本的数据类型吗

    不是。Java 中的基本数据类型只有 8 个 :byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下的都是引用类型(referencetype),Java 5 以后引入的枚举类型也算是一种比较特殊的引用类型。

    这是很基础的东西,但是很多初学者却容易忽视,Java 的 8 种基本数据类型中不包括 String,基本数据类型中用来描述文本数据的是 char,但是它只能表示单个字符,比如 ‘a’,‘好’ 之类的,如果要描述一段文本,就需要用多个 char 类型的变量,也就是一个 char 类型数组,比如“你好” 就是长度为2的数组 char[] chars = {‘你’,‘好’};

    但是使用数组过于麻烦,所以就有了 String,String 底层就是一个 char 类型的数组,只是使用的时候开发者不需要直接操作底层数组,用更加简便的方式即可完成对字符串的使用。

    String有哪些特性

    • 不变性:String 是只读字符串,是一个典型的 immutable 对象,对它进行任何操作,其实都是创建一个新的对象,再把引用指向该对象。不变模式的主要作用在于当一个对象需要被多线程共享并频繁访问时,可以保证数据的一致性。

    • 常量池优化:String 对象创建之后,会在字符串常量池中进行缓存,如果下次创建同样的对象时,会直接返回缓存的引用。

    • final:使用 final 来定义 String 类,表示 String 类不能被继承,提高了系统的安全性。

    String为什么是不可变的吗?

    简单来说就是String类利用了final修饰的char类型数组存储字符,源码如下图所以:

    /** The value is used for character storage. */
    private final char value[];
    

    String真的是不可变的吗?

    我觉得如果别人问这个问题的话,回答不可变就可以了。 下面只是给大家看两个有代表性的例子:

    1) String不可变但不代表引用不可以变

    String str = "Hello";
    str = str + " World";
    System.out.println("str=" + str);
    

    结果:

    str=Hello World
    

    解析:

    实际上,原来String的内容是不变的,只是str由原来指向"Hello"的内存地址转为指向"Hello World"的内存地址而已,也就是说多开辟了一块内存区域给"Hello World"字符串。

    2) 通过反射是可以修改所谓的“不可变”对象

    // 创建字符串"Hello World", 并赋给引用s
    String s = "Hello World";
    
    System.out.println("s = " + s); // Hello World
    
    // 获取String类中的value字段
    Field valueFieldOfString = String.class.getDeclaredField("value");
    
    // 改变value属性的访问权限
    valueFieldOfString.setAccessible(true);
    
    // 获取s对象上的value属性的值
    char[] value = (char[]) valueFieldOfString.get(s);
    
    // 改变value所引用的数组中的第5个字符
    value[5] = '_';
    
    System.out.println("s = " + s); // Hello_World
    

    结果:

    s = Hello World
    s = Hello_World
    

    解析:

    用反射可以访问私有成员, 然后反射出String对象中的value属性, 进而改变通过获得的value引用改变数组的结构。但是一般我们不会这么做,这里只是简单提一下有这个东西。

    是否可以继承 String 类

    String 类是 final 类,不可以被继承。

    String str="i"与 String str=new String(“i”)一样吗?

    不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

    String s = new String(“xyz”);创建了几个字符串对象

    两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象。

    String str1 = "hello"; //str1指向静态区
    String str2 = new String("hello");  //str2指向堆上的对象
    String str3 = "hello";
    String str4 = new String("hello");
    System.out.println(str1.equals(str2)); //true
    System.out.println(str2.equals(str4)); //true
    System.out.println(str1 == str3); //true
    System.out.println(str1 == str2); //false
    System.out.println(str2 == str4); //false
    System.out.println(str2 == "hello"); //false
    str2 = str1;
    System.out.println(str2 == "hello"); //true
    

    如何将字符串反转?

    使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。

    示例代码:

    // StringBuffer reverse
    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer. append("abcdefg");
    System. out. println(stringBuffer. reverse()); // gfedcba
    // StringBuilder reverse
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder. append("abcdefg");
    System. out. println(stringBuilder. reverse()); // gfedcba
    

    数组有没有 length()方法?String 有没有 length()方法

    数组没有 length()方法 ,有 length 的属性。String 有 length()方法。JavaScript中,获得字符串的长度是通过 length 属性得到的,这一点容易和 Java 混淆。

    String 类的常用方法都有那些?

    • indexOf():返回指定字符的索引。
    • charAt():返回指定索引处的字符。
    • replace():字符串替换。
    • trim():去除字符串两端空白。
    • split():分割字符串,返回一个分割后的字符串数组。
    • getBytes():返回字符串的 byte 类型数组。
    • length():返回字符串长度。
    • toLowerCase():将字符串转成小写字母。
    • toUpperCase():将字符串转成大写字符。
    • substring():截取字符串。
    • equals():字符串比较。

    在使用 HashMap 的时候,用 String 做 key 有什么好处?

    HashMap 内部实现是通过 key 的 hashcode 来确定 value 的存储位置,因为字符串是不可变的,所以当创建字符串时,它的 hashcode 被缓存下来,不需要再次计算,所以相比于其他对象更快。

    String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的

    可变性

    String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变的。StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,char[] value,这两种对象都是可变的。

    线程安全性

    String中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

    性能

    每次对String 类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String 对象。StringBuffer每次都会对StringBuffer对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用StirngBuilder 相比使用StringBuffer 仅能获得10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

    对于三者使用的总结

    如果要操作少量的数据用 = String

    单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

    多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

    Date相关

    包装类相关

    自动装箱与拆箱

    装箱:将基本类型用它们对应的引用类型包装起来;

    拆箱:将包装类型转换为基本数据类型;

    int 和 Integer 有什么区别

    Java 是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是 Integer,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

    Java 为每个原始类型提供了包装类型:

    原始类型: boolean,char,byte,short,int,long,float,double

    包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

    Integer a= 127 与 Integer b = 127相等吗

    对于对象引用类型:==比较的是对象的内存地址。
    对于基本数据类型:==比较的是值。

    如果整型字面量的值在-128到127之间,那么自动装箱时不会new新的Integer对象,而是直接引用常量池中的Integer对象,超过范围 a1==b1的结果是false

    public static void main(String[] args) {
        Integer a = new Integer(3);
        Integer b = 3;  // 将3自动装箱成Integer类型
        int c = 3;
        System.out.println(a == b); // false 两个引用没有引用同一对象
        System.out.println(a == c); // true a自动拆箱成int类型再和c比较
        System.out.println(b == c); // true
    
        Integer a1 = 128;
        Integer b1 = 128;
        System.out.println(a1 == b1); // false
    
        Integer a2 = 127;
        Integer b2 = 127;
        System.out.println(a2 == b2); // true
    }
    

    常用工具类库

    单元测试

    日志

    展开全文
  • 2019工程伦理慕课答案(2019秋)习题及期末答案

    万次阅读 多人点赞 2019-11-08 18:19:53
    内容和性质 目的 活动主体 任务、对象和思维方式 单选题 (1/1 point) 下列哪一项不是工程活动的特征 自主性 创造性 社会性 确定性 多选题 (1points) 下列哪项是工程的完整生命周期中的环节...

    第一章~第十章习题(上)及期末考试答案

    下面是第一章~第十章习题答案(下)

    第一章习题(下)

    单选题 (1/1 point)

    下列哪一项不是工程与技术的区别

    • 内容和性质
    • 目的
    • 活动主体
    • 任务、对象和思维方式

    单选题 (1/1 point)

    下列哪一项不是工程活动的特征

    • 自主性
    • 创造性
    • 社会性
    • 确定性

    多选题 (1points)

    下列哪项是工程的完整生命周期中的环节

    • 计划
    • 设计
    • 评估
    • 完成

    判断题 (1/1 point)

    计划、设计、建造、使用和结束构成了工程完整的生命周期

    • 正确
    • 错误

    判断题 (1/1 point)

    工程包括哲学、技术、经济、管理、社会、生态、伦理这7个维度。

    • 正确
    • 错误

    You have used 1 of 1 submissions
    单选题 (1points)

    以下哪项不是规范伦理学的立场

    • 功利论 功利论
    • 义务论
    • 契约论
    • 存在论

    单选题 (1points)

    下列哪项不是罗斯为直觉主义义务论提出的道德原则

    • 忠诚
    • 公平
    • 感恩
    • 不行恶

    单选题 (1/1 point)

    下列职业社团名称缩写错误的是

    • 美国土木工程师协会(ASCE)
    • 电子和电子工程师协会(IEEE)
    • 美国机械工程师学会(ABET)
    • 美国化学工程师学会(AIChE)

    判断题 (1/1 point)

    根据伦理规范得到社会认可和被制度化的程度,我们可以把伦理规范分为制度性的伦理规范和描述性的伦理规范两种情况。

    • 正确
    • 错误

    判断题 (1/1 point)

    伦理是个体性、主观性的,侧重个体的意识、行为与准则、法则的关系;道德则是社会性和客观性的,侧重社会“共体”。

    • 正确
    • 错误

    多选题 (1/1 point)

    当工程实践出现“超越于道德的”的情形时,我们可以通过道德慎思为自己的伦理行为划分优先顺序,审慎地思考和处理存在的几对重要的伦理关系。这几对重要的伦理关系指的是

    • 自主与责任
    • 效率与公正
    • 个人与集体
    • 环境与社会

    单选题 (1/1 point)

    下列哪项不是工程伦理问题的特点

    • 历史性
    • 社会性
    • 复杂性
    • 简明性

    单选题 (1/1 point)

    下列哪项不是处理工程伦理问题的基本原则

    • 人道主义
    • 功利主义
    • 社会公正
    • 人与自然和谐发展

    判断题 (1/1 point)

    工程活动是一种集成多种自然与社会资源,协调多种利益诉求和冲突的社会活动,是一种极其复杂的社会实践,需要众多的行动者参与。

    • 正确
    • 错误

    单选题 (1/1 point)

    下列哪项不是依据工程伦理问题的对象来划分伦理问题的?

    • 因伦理意识缺失或者对行为后果估计不足导致的问题
    • 因工程相关的各方利益冲突所造成的伦理困境
    • 工程共同体内部意见不合,或者工程共同体的伦理准则与规范等与其他伦理原则之间不一致导致的问题
    • 因工程伦理章程缺乏或者不足而导致的问题

    多选题 (1/1 point)

    “博帕尔MIC毒气泄漏事件”主要涉及哪几方面的问题

    • 企业和政府在维护公共安全和环境安全方面所肩负的责任和各自扮演的角色问题
    • 跨国工程活动中发达国家向发展中国家的环境成本转移问题
    • 跨国公司的双重技术标准问题
    • 如何通过相关法规和制度来保障工程活动中的弱势群体权益的问题

    判断题 (1/1 point)

    从处理工程与人、社会和自然的关系的三个层面看,处理工程中伦理问题要坚持以下三个基本原则:人道主义———处理工程与人关系的基本原则;社会公正———处理工程与社会关系的基本原则;人与自然和谐发展———处理工程与自然关系的基本原则。

    • 正确
    • 错误

    第二章习题(下)

    判断题 (1/1 分数)
    从普利高津耗散结构理论的视角来看,工程必然会伴随风险的发生

    • 正确
    • 错误

    判断题 (1/1 分数)
    在讨论工程设计理念时,只需要工程师代表参与决策

    • 正确
    • 错误

    单选题 (1/1 分数)
    意外风险的应对通常采取的措施包括风险回避、风险转移等,其中风险转移的目的是?

    • 降低风险发生的概率
    • 降低不利后果的大小
    • 在风险发生时将损失分散
    • 保护工人的安全

    单选题 (1/1 分数)
    在制定事故应急预案时,不恰当的做法是?()

    • 预防为主,防治结合
    • 保留现场,等待救援
    • 以人为本,生命第一
    • 统一指挥,协同联动

    单选题 (1/1 分数)
    下列哪项属于工程风险中的技术因素?()

    • 自然灾害
    • 工程设计理念的缺陷
    • 施工质量缺陷
    • 控制系统失灵

    多选题 (1/1 分数)
    工程风险的来源有哪些?()

    • 技术因素的不确定性
    • 环境因素的不确定性
    • 文化因素的不确定性
    • 人为因素的不确定性

    多选题 (1/1 分数)
    对于不能及时进行处理的工程质量缺陷,应填写质量缺陷备案表,表中应包括哪些信息?()

    • 缺陷产生的部位和原因
    • 对工程安全性的分析
    • 使用功能和运用影响分析
    • 处理方案和不处理原因分析

    文字填空题 (1/1 分数)
    操作人员是预防工程风险的核心环节,也是防止工程风险发生的最后一道屏障,必须要加强对操作人员安全意识的教育,时时刻刻以“ ”为行动准则。(四个字)

    答案:安全第一

    判断题 (1/1 分数)
    在制度层面,目前公众参与工程主要以网络投票为参与途径。

    • 正确
    • 错误

    判断题 (1/1 分数)
    公众参与工程风险伦理评估的前提是信息的公开。

    • 正确
    • 错误

    单选题 (1/1 分数)
    下列工程风险的伦理评估原则中哪项属于预防为主的原则?

    • 尊重当事人的“知情同意”权
    • 要加强安全知识教育,提升人们的安全意识
    • 考虑对社会环境和生态环境造成的影响
    • 建立并落实安全生产问责机制

    单选题 (1/1 分数)
    下列属于工程风险的外部评估主体的是()?

    • 工程师
    • 社会公众
    • 工人
    • 管理者

    单选题 (1/1 分数)
    对于可接受风险,以下哪种视角是专家视角()?

    • 可接受的风险是这样风险,在可以选择的情况下,伤害的风险至少相等于产生收益的可能性
    • 可接受的风险指的是这样风险,它是通过行使自由和知情同意权而自愿认可的,或者它是得到适当赔偿的,并且它是公正地分配的
    • 可接受的风险是这样风险,其保护公众免遭伤害的重要性远远超过了使公众获利的重要性
    • 采取任何手段,只要让公众自愿接收的风险

    判断题 (1/1 分数)
    当工程风险发生时,往往不能把全部责任归结于某一个人,而需要工程共同体共同承担

    • 正确
    • 错误

    判断题 (1/1 分数)
    伦理责任就是法律责任

    • 正确
    • 错误

    单选题 (1/1 分数)
    下列不属于“职业”的特征是?()

    • 理智性
    • 长期性
    • 自主性
    • 非垄断性

    单选题 (1满分)
    下列哪项不属于工程伦理责任类型?()

    • 职业伦理责任
    • 社会伦理责任
    • 环境伦理责任
    • 家庭伦理责任

    单选题 (1/1 分数)
    下列哪项超出了工程伦理责任类型?()

    • 过失-责任
    • 赔偿-责任
    • 角色-责任
    • 义务-责任

    第三章习题(下)

    判断题 (1/1 point)
    由工程的目标价值导向性引出一个重要的伦理问题,这就是工程为什么人服务,为什么目的服务?()

    • 正确
    • 错误

    单选题 (1/1 point)
    下列哪一项体现了工程的文化价值?()

    • 标志性工程是所属民族的精神纽带
    • 工程的“普遍接入”和“普遍服务”
    • 工程制造的科学仪器
    • 环境保护和生态修复工程

    判断题 (1/1 point)
    工程社会价值的一个极端表现是其军事价值。()

    • 正确
    • 错误

    单选题 (1/1 point)
    工程的()价值具有非道德性质,这决定了工程的最终价值取决于工程应用于什么目的,即工程的实际价值取决于社会的要求和社会环境。

    • 工具价值
    • 内在价值
    • 伦理价值
    • 社会价值

    多选题 (1/1 point)
    工程具有多元的价值,主要包括()

    • 科学价值
    • 政治价值
    • 社会价值
    • 文化价值

    单选题 (1/1 point)
    如何确定什么人可以首先享受到工程成果,或者如何确定人们享受的顺序,这属于工程的()问题。

    • 管理问题
    • 技术问题
    • 资源分配问题
    • 制度问题

    判断题 (1/1 point)
    讨论工程的利益分配可以从宏观和微观两个层面来进行,宏观层面是指企业内部工程项目的活动情况。

    • 正确
    • 错误

    单选题 (1/1 point)
    产品价格过高,会使得普通大众难以分享工程的好处,妨碍了实现工程成果为更多人()。

    • 所及和普惠
    • 接受
    • 认可
    • 理解

    判断题 (1/1 point)
    工程受益人群的确定由市场来调控,我们把不能获得工程产品和服务的现象,称作“排除”。()

    • 正确
    • 错误

    多选题 (1/1 point)
    下列哪些因素会影响工程产品和服务的可及性和普惠性?()

    • 用户的经济状况
    • 用户的知识水平
    • 用户的技术水平
    • 用户的能力问题

    判断题 (1满分)
    “邻避”行为突出反映了工程项目建设的利益—损失分配不公正的问题。()

    • 正确
    • 错误

    单选题 (1/1 point)
    “邻避”事件发生的原因很复杂,不一定是现实的危害,而是()。

    • 利益分配不公平
    • 居民对危害的心理担忧和风险感知
    • 利益补偿不合理
    • 公众参与不充分

    判断题 (1/1 point)
    传统的工程观主要考虑企业本身的收益和付出,很少考虑用户为工程付出的代价。()

    • 正确
    • 错误

    单选题 (1/1 point)
    一些工程建设引起的大规模的拆迁移民,可能增加社会秩序的不安定因素,这属于工程对()的影响。

    • 环境
    • 经济
    • 社会
    • 资源

    多选题 (1/1 point)
    米切尔认为,利益相关者必须具备以下哪些条件。()

    • 创造力
    • 影响力
    • 合法性
    • 紧迫性

    文字填空题 (1/1 point)
    公正是指,每个人都应获得其应得的权益,对平等的事物平等对待,不平等的事物()对待。(两个字)
    答案:区别

    单选题 (1满分)
    分配公正的基本实现途径是在不同利益与价值追求的个人与团体间的对话的基础上,达成有普遍约束力的()原则。

    • 社会公正
    • 利益协调
    • 分配与补偿
    • 道德伦理

    判断题 (1/1 point)
    吸收利益攸关方参加工程的决策、建设、运营是为了保证补偿公正。()

    • 正确
    • 错误

    多选题 (1/1 point)
    美国伦理学家理查德·T.德·乔治将公正分为以下哪些类型?()

    • 补偿公正
    • 惩罚公正
    • 分配公正
    • 程序公正

    多选题 (1/1 point)
    下列哪些属于工程项目社会评价的社会公平指标?()

    • 基尼系数
    • 恩格尔系数
    • 就业率
    • 公众参与度

    第四章习题(下)

    单选题
    提出保护资源的目的是为了自然本身的利益,而不是人类的利用,这是()主义的主张。

    • 社会保护主义
    • 环境保护主义
    • 资源保护主义
    • 自然保护主义

    单选题
    ()主张把道德关怀的范围从人类扩展到非人类的生命或自然存在物上。

    • 人类中心主义者
    • 非人类中心主义者
    • 价值主观论者
    • 价值客观论者

    判断题
    “大地伦理”的提出者利奥波德认为:一件事情当有助于保护自然的和谐、稳定和美丽时,它就是正确的,反之,就是错误的。()

    • 正确
    • 错误

    文字填空题
    如果我们承认了自然事物拥有内在价值,我们就认可了自然事物的(),我们就与道德义务维护自然事物。(四个字)
    答案:道德权利

    判断题
    认为自然界的价值不依人的存在或人的评价而存在,只要对地球生态系统的完善和健康有益的事物就有价值,是价值客观论者的主要观点。()

    • 正确
    • 错误

    多选题
    "尊重自然"的伦理体系包括以下哪几部分?()

    • 尊重自然的态度
    • 深层生态学
    • 生物中心主义
    • 人类中心主义

    多选题
    下列哪些选项属于非人类中心主义思想?()

    • 动物解放论
    • 动物权利论
    • 生物中心主义
    • 生态中心主义

    文字填空题
    对工程活动进行分析、预测和评估,提出预防或者减轻不良环境影响的对策和措施,这是对工程进行()评价。(四个字)
    答案: 环境影响

    判断题
    工程理念是工程活动的出发点和归宿,是工程活动的灵魂。()

    • 正确
    • 错误

    单选题
    好的工程会把()和合人的目的性有机结合起来。

    • 合工程的目的性
    • 合自然的规律性
    • 合社会的进步性
    • 合技术的发展性

    单选题
    在权衡人与自然利益的优先秩序上应遵循()高于基本需要、基本需要高于非基本需要。

    • 社会需要
    • 伦理需要
    • 生存需要
    • 发展需要

    单选题
    ()原则是我们对自然环境的首要态度,也是我们行动的首要原则。

    • 公平性原则
    • 整体性原则
    • 尊重原则
    • 平等性原则

    多选题
    工程建设对环境产生的影响主要包括()。

    • 消耗能源和资源
    • 造成的固废污染和水污染
    • 噪声和振动影响
    • 排出的有害气体威胁人们的健康

    单选题
    工程共同体的环境伦理主要指,工程过程应切实考虑()及社会的承受性。

    • 政府
    • 自然生态
    • 雇主
    • 公众

    文字填空题
    随着工程对自然的干预和破坏能力越来越巨大、后果越来越危险,工程师需要发展一种新的责任意识,即()(六个字)
    答案:环境伦理责任

    单选题
    工程师的环境伦理责任不只是赋予工程师责任和义务,同时也赋予他相应的(),使得他在必要时及时中止他的责任和义务。

    • 资源
    • 利益
    • 自由
    • 权利

    判断题
    对工程师的评价标准不是工程师是否把工作做好了,而是是否做了一项好到工作,既促进了经济发展,又避免了环境遭到破坏。()

    • 正确
    • 错误

    判断题
    工程共同体通常由项目投资人、设计者、工程师、工人构成。()

    • 正确
    • 错误

    多选题
    下列选项哪些属于工程师的环境伦理责任?()

    • 维护人类健康
    • 维护自然生态环境
    • 忠诚于雇主
    • 维护公司的利益

    第五章习题(下)

    判断题
    职业的行为规范强调的是“自我机制”,技术规范强调“社会机制”

    • 正确
    • 错误

    文字填空题
    工程领域中的“职业”是指“那些涉及高深的专业知识、()和对公共善协调服务的工作方式”。(四个字)
    自我管理

    单选题
    以下哪项是对职业共同体中工程师负责任的职业行为的错误理解?()

    • 工程师的责任就是他或她在工程生活中必须履行的角色责任
    • 工程师可以对履行特定义务作出回应
    • 工程师接受自己的工作职责和社会责任,并自觉地为实现这些义务努力
    • 工程师须对行为的危害承担责任,不能为自己行为的功绩要求荣誉

    判断题
    工程社团是工程职业的生活形态。

    • 正确
    • 错误

    单选题
    工程职业制度不包括()

    • 职业准入制度
    • 职业资格制度
    • 执业资格制度
    • 职业准出制度

    单选题
    以下哪项是注册工程师执业资格制度的首要环节?()

    • 职业实践
    • 资格考试
    • 高校工程专业教育
    • 注册执业管理

    多选题
    有关职业伦理章程的正确描述是()

    • 职业伦理章程一般采用规范和准则的形式
    • 职业伦理章程为职业行为提供一种普遍的和协商一致的标准
    • 职业伦理章程的主要关注点是促进负责任的职业行为
    • 职业伦理章程表达了对职业共同体内从业者的职业行为的期待

    判断题
    作为职业伦理的工程伦理是一种预防性、规范性的实践伦理

    • 正确
    • 错误

    单选题
    以下哪项是工程师的首要责任?()

    • 公众的安全、健康及福祉
    • 雇主的利益
    • 客户的利益
    • 可持续发展

    单选题
    以下哪项是工程师最新的职业责任观?()

    • 雇主的命令
    • 工程师的反叛
    • 承担社会责任
    • 对自然和生态负责

    多选题
    以下哪项是对工程师自律的正确理解?()

    • 工程师的自律是对职业责任的主动担当
    • 自律是工程师对工程-人-自然-社会整体必然存在的一种道德自觉
    • 自律使工程师从朦胧未显的工程伦理意识走向明确自主的对责任的担当
    • 工程师的自律表现为一种从向善到行善的自觉、自愿与自然的职业精神

    判断题
    举报是举报者一种最明智之举

    • 正确
    • 错误

    单选题
    作为职业人员,工程师不能享有以下哪项权利:()

    • 在规定范围内从事执业活动
    • 对他人执业活动进行解释和辩护
    • 接受继续教育
    • 在本人执业活动中形成的文件上签字并加盖执业印章

    单选题
    “工程师遵守甚至超越职业标准的积极责任”属于工程师的哪一种责任?()

    • 义务-责任
    • 过失-责任
    • 角色-责任
    • 岗位-责任

    单选题
    从职业伦理的角度看,工程师的()美德体现了工程伦理的核心

    • 诚实可靠
    • 忠实服务
    • 尽职尽责
    • 善良

    文字填空题
    工程师最综合的美德是()的职业精神。(三个字)
    答案:负责任
    判断题
    服务是工程师开展职业活动的一项基本内容和基本方式。

    • 正确
    • 错误

    单选题
    以下哪项不属于工程师的角色冲突?

    • 工程师与企业雇员
    • 工程师与管理者
    • 工程师与社会公众
    • 工程师与同事

    单选题
    工程中利益冲突的种类不包括()

    • 个体利益之间的冲突
    • 个体利益与群体利益之间的冲突
    • 个体利益与整体利益之间的冲突
    • 群体利益与整体利益之间的冲突

    第六章习题(下)

    多选题 (1/1 point)
    水利工程的影响深远体现在()

    • 水利工程对于促进国民经济和社会发展具有全方位的深远影响。
    • 水利工程会引起空间大范围的连锁反应。
    • 水利工程的影响常常跨越数十年甚至上百年。
    • 水利工程对人文和生态环境均产生深远影响。

    文字填空题 (1/1 point)
    水利工程就是对自然界中的水资源进行有效控制、按需调配、持续利用及()的工程。(四个字)
    答案: 全面保护
    判断题 (1/1 point)
    我国水资源丰富,人均水资源占有量为世界平均水平的四分之一。

    • 正确
    • 错误

    单选题 (1/1 point)
    以下哪项是新时期水利工程的崭新内容?

    • 港口与航道工程
    • 水力发电工程
    • 河湖环境生态工程
    • 水土保持工程

    判断题 (1/1 point)
    中国水利工程建设经历了工程水利、资源水利和生态水利三个阶段的演变

    • 正确
    • 错误

    判断题 (1/1 point)
    政府的行政意愿对水利工程建设的影响巨大。

    • 正确
    • 错误

    单选题 (1/1 point)
    水权的核心是哪项权利?()

    • 所有权
    • 配置权
    • 经营权
    • 使用权

    多选题 (1/1 point)
    水资源公正配置的原则包括()

    • 邻近优先
    • 尊重历史
    • 利益补偿
    • 重视生态

    单选题 (1/1 point)
    以下哪项是对跨地区调水的错误理解?()

    • 实施跨地区调水时,水源地的用水需求应该优先得到满足
    • 跨地区调水时要统筹兼顾调出和调入流域的用水需要
    • 水资源配置向水资源调出区倾斜时很有可能会成为利益驱动下的默认选择
    • 在具体工作中,并非总能优先考虑水源地的用水需求和实际利益

    单选题 (1/1 point)
    以下哪项说法是正确的?

    • 涉及水资源分配的国际水法条款与国际水条约非常多
    • 存在普适的水资源分配法则
    • 现有国际水法过多地强调上游国家对水资源地利用
    • 通过协商来解决水资源的分配与利用问题常常是唯一可行的途径

    判断题 (1/1 point)
    在我国,工业用水一直占水资源总量的最大比重。

    • 正确
    • 错误

    判断题 (1/1 point)
    对水利工程风险进行完全的定量评价是现实的。

    • 正确
    • 错误

    判断题 (1/1 point)
    我国已建成的水利工程在数量和规模上均居世界第二。

    • 正确
    • 错误

    单选题 (1/1 point)
    以下哪项不是从人类生存和发展的维度看河流的价值?()

    • 政治
    • 生态
    • 审美
    • 文化

    单选题 (1/1 point)
    以下哪项不是从河流的外在价值观察到的河流生命的特征?()

    • 周期性
    • 柔性
    • 独特性
    • 庄严性

    判断题 (1/1 point)
    水利工程对河流健康生命没有正面的促进作用。

    • 正确
    • 错误

    单选题 (1/1 point)
    以下哪项是对水利工程对河流健康生命造成巨大冲击的错误表述?()

    • 水利工程导致诸多天然美景的消失
    • 水利工程破化了河流生态系统的空间连续性
    • 水利工程减弱甚至切断了物质和能量沿水流的传递
    • 水利工程对河流生态系统的扰动是不可恢复的。

    文字填空题 (1满分)
    在实践中,通过法律、技术和()手段,努力维护河流健康生命。(两个字)
    答案: 管理

    单选题 (1/1 point)
    以下哪项原则是移民工作成败的核心?()

    • 顾全大局
    • 公平公正
    • 因地制宜
    • 可持续发展

    单选题 (1/1 point)
    以下哪项是对核定补偿标准的错误描述?()

    • 无形的损失难以估量
    • 要避免同一工程的不同区域、不同群体补偿方面存在不公平的现象
    • 要避免不同时间段(主要指可比的相邻时段内)移民补偿存在不公平的现象。
    • 与其他行业相比,水利工程补偿标准偏高。

    判断题 (1/1 point)
    通过努力,水利工程师在职业生涯中可以充分掌握全部的知识。

    • 正确
    • 错误

    第七章习题(下)

    多选题 (1满分)
    生物医药工程伦理问题包括()

    • 不可接受的“风险-受益”比
    • 环境污染问题
    • 学术不端问题
    • 公平可及性问题

    多选题 (1/1 point)
    生物医药工程中造成不可接受的“风险-受益”比的原因包括:()

    • 科研人员伦理意识淡薄
    • 伦理审查不规范
    • 没有把受试者安全放在首位
    • 忽视受试者的权益

    判断题 (1/1 point)
    现有的多数药品是针对成人进行的临床试验,增加了患儿的用药风险

    • 正确
    • 错误

    判断题 (1/1 point)
    多数制药企业喜欢投资孤儿药品。

    • 正确
    • 错误

    多选题 (1满分)
    生物医药研发和应用领域的知情同意问题十分突出,表现在()

    • 有些生物医药工程技术研发人员有意抹杀了“治疗”与“研究”的区别
    • 淡化了临床研究的潜在疗效
    • 夸大了可能的风险
    • 误导受试者

    文字填空题 (1/1 point)
    公正原则包括:程序公正、回报公正和()(四个字)
    答案:分配公正

    多选题 (1/1 point)
    生物医药研发和应用应尽量减少的风险包括()

    • 对受试人群的身心伤害
    • 给受试人群带来的经济负担
    • 造成的公共卫生风险
    • 造成的生态环境风险

    文字填空题 (1/1 point)
    自主性是指有行为能力的人在不受干扰的状态下,自愿选择行动方案的意识和()。(两个字)
    答案: 能力

    单选题 (1满分)
    以下哪项可以从"受益最大化原则"从推导出来?()

    • 生物医药研发和应用应将预防作为主要目标
    • 将工程的社会经济效益放在首位
    • 当经济回报、优先权、奖励等与受试者利益冲突时,把受试者的权益放在首位。
    • 国家利益始终大于患者健康需要的满足。

    单选题 (1满分)
    生物医药工程的伦理问题的主要来源不包括()

    • 因经济利益冲突而提出的“应该”问题
    • 因政治利益冲突而提出的“应该”问题
    • 因道德义务冲突而引起的伦理难题
    • 因宗教文化冲突而产生的伦理“应该”问题。

    单选题 (1/1 point)
    伦理审查委员会的基本职能不包括()

    • 改变研究方案
    • 监督
    • 咨询
    • 指导

    单选题 (1满分)
    动物研究的伦理要求实行3R原则不包括()

    • 考虑能够不使用动物
    • 减少动物使用量及使用中减少动物的痛苦
    • 权衡对动物的可能伤害及人类的受益以及动物伦理审查委员会的独立审查。
    • 考虑能否循环使用动物

    单选题 (1/1 point)
    医疗器械临床试验伦理审查要点不包括()

    • 试验的科学设计
    • 试验的风险和受益
    • 平等对待受试者
    • 知情同意

    判断题 (1/1 point)
    基因是有“好”或“坏”、“优”或“劣”之分的。

    • 正确
    • 错误

    判断题 (1/1 point)
    获知遗传基因信息不一定有利于个人对自己的生活作出理性的安排

    • 正确
    • 错误

    多选题 (1/1 point)
    基因信息泄露会引发哪些问题:()

    • 泄露家族成员的遗传倾向。
    • 可能在就学、就业、婚姻等方面受到歧视
    • 如果有基因缺陷,有些保险公司可能会拒绝为他们在医疗
    • 引发个人的不安和焦虑

    单选题 (1/1 point)

    • 以下哪项是对基因治疗临床试验的伦理审查的错误表述?()
    • 慎重选择受试者,确立准入和排除的严格标准。
    • 筛选程序要公平,并接受审查和监督。
    • 要预先进行方案的风险-受益分析
    • 有其他替代的有效常规疗法时,也可以使用基因治疗临床方案。

    单选题 (1满分)
    以下哪项不属于不征求提供者再次同意的条件:()

    • 样本是匿名的,不与其他可识别信息相联系
    • 样本提供者有机会自由撤回样本
    • 不征求再次同意对提供者更有利
    • 满足上述条件,就可以不接受伦理审查委员会的审查和批准。

    单选题 (1/1 point)
    以下哪项是对“治疗”和“研究”的错误理解?()

    • 治疗是将已被证明有效的方法用于病人
    • 病人从治疗中受益,病人应该付费。
    • 研究者无需给予受试者补偿
    • 研究如果对受试者造成损害,研究者应予以赔偿。

    文字填空题 (1满分)
    捐赠器官问题有两种同意方式:自愿捐献和()(四个字)
    答案:推定同意

    判断题 (1/1 point)
    活体器官移植是解决器官供应的根本途径。

    • 正确
    • 错误

    多选题 (1/1 point)
    以下哪项是对制药工程的正确表述?()

    • 制药工程以提升广大患者的健康需求为导向
    • 制药工程涉及众多利益主体,各方的角色分工和利益诉求不同,需要协同互助,信守承诺。
    • 制药工程受到市场需求、国家政策、研发资金等诸多因素的综合影响。
    • 制药企业是制药工程创新的主体,制药工程人员要有企业家精神。

    单选题 (1/1 point)
    以下哪项是对中国制药企业的社会责任的正确表述?()

    • 社会责任履行情况整体较好。
    • 新药研发水平相对滞后,资金投入不足,创新能力较低。
    • 制药企业或药物研发机构一般会主动公开负面报道。
    • 药品质量事故较少。

    第八章习题(下)

    判断题 (1/1 point)
    中国是仅次于美国的第二大二氧化碳排放国

    • 正确
    • 错误

    判断题 (1/1 point)
    煤电比核电更清洁

    • 正确
    • 错误

    单选题 (1/1 point)
    我国第一颗原子弹爆炸成功是在哪一年()

    • 1950
    • 1964
    • 1967
    • 1971

    单选题 (1满分)
    核工程应遵循的伦理原则包括

    • 以人为本原则
    • 可持续发展原则
    • 生态原则
    • 公正原则

    多选题 (1/1 point)
    核工程应该遵循的伦理原则主要有()
    以人为本原则, 可持续发展原则, 生态原则, 公正原则, - 正确

    • 以人为本原则
    • 可持续发展原则
    • 生态原则
    • 公正原则

    单选题 (1/1 point)
    对伦理规范的审查应该在项目建设的什么时期()

    • 初期
    • 中期
    • 运行期
    • 后期

    判断题 (1/1 point)
    “零风险”是可以实现的

    • 正确
    • 错误

    多选题 (1/1 point)
    风险主要包括哪些要素()

    • 事件诱因
    • 事件概率
    • 事件后果
    • 事件过程

    判断题 (1满分)
    系统的正反馈效应能够维持系统平衡与稳定

    • 正确
    • 错误

    多选题 (1/1 point)
    公众在核工程中的权利有()

    • 知情权
    • 决策权
    • 参与权
    • 讨论权

    多选题 (1/1 point)
    影响核事故信息公开的主要因素有()

    • 政治因素
    • 经济因素
    • 社会因素
    • 个人因素

    多选题 (1满分)
    核安全基本原则主要有()

    • 管理责任
    • 纵深防御
    • 技术防御
    • 公民参与

    单选题 (1/1 point)
    核安全文化的主导和核心是()

    • 系统
    • 设备
    • 环境

    多选题 (1满分)
    放射性废物主要造成的危害有()

    • 职业照射
    • 公众照射
    • 持续急性照射
    • 隐性照射

    多选题 (1满分)
    核电站的环境影响主要包括()

    • 放射性污染
    • 热污染
    • 内陆核电站的影响
    • 硫化物污染

    判断题 (1/1 point)
    工程师可以代替民众进行工程决策

    • 正确
    • 错误

    第九章习题(下)

    多选题 (1/1 分数)
    下列哪几项属于信息技术的特点

    • 连接能力
    • 交互能力
    • 渗透特性
    • 融合能力

    判断题 (1/1 分数)
    “互联网+”指以互联网为主的一整套信息技术在经济、社会生活各部门的扩散和应用过程,其本质是传统产业和生产过程的在线化、数据化。

    • 正确
    • 错误

    多选题 (1/1 分数)
    下列哪几项属于大数据的特点

    • 数量大
    • 类别多
    • 增长速度快
    • 真实可信

    多选题 (1/1 分数)
    大数据时代背景下,我们将面临哪些新的、更为集中的伦理挑战

    • 身份困境
    • 隐私边界
    • 数据权利
    • 数据治理

    判断题 (1/1 分数)
    大数据与以往数据应用不同之处表现在三方面:可以获得全体数据而非采样数据;允许获取的数据呈现混乱、复杂状态而不再强求干净、精确,即大方向的正确比微观精准更重要;聚焦发现和分析事物的相关性而非因果性。

    • 正确
    • 错误

    单选题 (1/1 分数)
    下列哪项不是“数字身份”的特点

    • 多样性
    • 可变性
    • 允许匿名和假名
    • 唯一性

    多选题 (1/1 分数)
    在计算机和网络应用中,常见的用户身份管理技术有

    • 用户名+密码+校验码
    • 第三方认证,如 U 盾
    • 预存的个性化问题
    • 生物特征

    判断题 (1/1 分数)
    人的身份(identity),用来界定一个人是谁或是什么,具有可识别性、独特性、唯一性。

    • 正确
    • 错误

    多选题 (1/1 分数)
    由于网络和信息技术的特点,保护数据隐私面临一系列技术和非技术的挑战,下列哪项属于所面临的挑战?

    • 可信性与可靠性
    • 快速扩散性与放大器效应
    • 挖掘技术与关联发现
    • 身份盗窃与冒用

    多选题 (1/1 分数)
    大数据时代,收集个人数据包括哪些手段?

    • 开放API
    • Web应用
    • 黑客攻击
    • 交易(公开或秘密)

    判断题 (1/1 分数)
    隐私权指自然人享有的私人生活安宁与私人信息依法受保护,不被非法侵扰、知悉、搜集、利用和公开的一种人格权.

    • 正确
    • 错误

    判断题 (1/1 分数)
    要为大数据创新应用提供高质量的数据基础,必须坚持尊重、公平交易、诚信这三个价值判断原则,谨慎对待各方数据权利

    • 正确
    • 错误

    判断题 (1/1 分数)
    个人信息是指与特定个人相关联的、反映个体特征的具有可识别性的符号系统,包括个人身份、工作、家庭、财产、健康等各方面的信息

    • 正确
    • 错误

    多选题 (1/1 分数)
    脱胎于“家国天下”传统社会伦理的中华价值观,表现出了哪些特色

    • 责任先于自由
    • 义务先于权利
    • 群体高于个人
    • 和谐高于冲突

    单选题 (1/1 分数)
    数据伦理责任是具有普遍意义的伦理责任在大数据时代的具体化,那么,下列哪项不属于大数据伦理责任的特点?

    • 自律性
    • 强制性
    • 广泛性
    • 实践性

    判断题 (1/1 分数)
    大数据创新科技人员的伦理责任主要表现在尊重个人自由、 强化技术保护、严格操作规程、加强行业自律、承担社会责任这五个方面

    • 正确
    • 错误

    多选题 (1满分)

    • 人际关系虚拟化
    • 正当的网络行为
    • 平等与公正、知识产权争议
    • 全球化信息交互与治理困境

    第十章习题(下)

    下一个
    单选题 (1/1 point)
    环境工程是人类为减少工业化生产过程和人类生活过程对环境的影响进行()的工程手段。

    • 政策治理
    • 经济治理
    • 社会治理
    • 污染治理

    单选题 (1/1 point)
    环境问题主要是指由于人类经济和社会活动引起的环境破坏,实质是经济发展与环境保护的冲突,是()关系的失调。

    • 经济与社会
    • 自然与社会
    • 人与自然
    • 人与社会

    判断题 (1/1 point)
    任何物质的创造都会使用资源、消耗资源,在消耗资源的过程中必然会有废弃物的排放。()

    • 正确
    • 错误

    判断题 (1/1 point)
    由于环境工程师的工作直接涉及环境保护,相对其他工程师及非环境工作者来说,环境工程师应该负有更加特殊和更加重要的环境伦理责任。

    • 正确
    • 错误

    文字填空题 (1/1 point)
    环境正义的实现应该以()为本位,所有公民(不包括后代人和自然体)对大自然都负有环境保护的责任和义务。(四个字)
    答案:环境义务

    单选题 (1/1 point)
    现代工业生产活动是人、机器与环境共同存在、相互影响的系统,()保证了系统的可靠。

    • 制度管理
    • 安全生产
    • 科学技术
    • 应急防范

    单选题 (1/1 point)
    公共安全问题主要发生在公共工程运营中,是由于其()给非工程直接利益相关的社会公众带来的安全问题。

    • 社会性
    • 特殊性
    • 风险性
    • 公共性

    多选题 (1满分)
    工程师作为工程设计的主要承担者和执行者,下列哪些工程阶段会面临遵守职业规范和服从雇主命令之间的冲突。

    • 工程设计阶段
    • 工程保养阶段
    • 工程建造和生产阶段
    • 工程维护阶段

    判断题 (1满分)
    在企业发生的工伤事故中,70%左右的事故在不同程度上与人的失误有关,而出现这些问题的最根本的原因是环境保护意识薄弱。()

    • 正确
    • 错误

    PS: 实在不懂工伤事故的根本原因为什么是环境保护意识薄弱,找不到逻辑在哪?要么就是答案错了……

    判断题 (1/1 point)
    所有对社会有价值的存在形式都应得到尊重和保护,每个个体都会对环境产生影响并应承担相应的责任。

    • 正确
    • 错误

    单选题 (1/1 point)
    企业应保持寻求自身发展与社会经济可持续发展目标的一致性,把()纳入生产成本中。

    • 工程代价
    • 经济代价
    • 社会代价
    • 环境代价

    单选题 (1/1 point)
    环境工程的社会责任是在()的同时,不阻碍或促进经济的健康发展,以及保护其他社会利益。

    • 企业管理
    • 保护环境
    • 工程建设
    • 社会生产

    多选题 (1/1 point)
    环境问题涉及哪些利益相互协调的问题?()

    • 社会公共利益
    • 政治利益
    • 生态利益
    • 经济利益

    判断题 (1/1 point)
    环境工程师可以通过环保工程改善环境,也可能因为采用的技术或实施过程的不合理而破坏环境。()

    • 正确
    • 错误

    单选题 (1/1 point)
    现代工程需要广阔的基础知识,因此要求环境工程师必须具备自然科学知识、社会科学知识等基础知识和较高的()。

    • 环保意识
    • 职业精神
    • 专业知识
    • 科学态度

    单选题 (1/1 point)
    环境工程作为调节人与人、人与社会之间关于()利益关系的工程,其基本原则就是生态整体利益和长远利益高于一切。

    • 社会发展
    • 生态环境
    • 经济增长
    • 工程管理

    多选题 (1/1 point)
    下列哪些行为属于不诚实的表现形式?()

    • 篡改数据
    • 伪造数据
    • 修饰拼凑
    • 抄袭剽窃

    判断题 (1满分)
    作为环境保护技术的主体,尽管环境工程师可以通过各种环保工程建设来影响人类社会,但宣传环保知识不属于环境工程师应该承担的责任。()

    • 正确
    • 错误

    判断题 (1/1 point)
    有意不传达听众所合理期望的不被省略的信息,是工程师的不诚实行为。()

    • 正确
    • 错误

    最后恭喜大家完成工程伦理慕课的学习!!!

    展开全文
  • 路径规划基本介绍(一)

    万次阅读 多人点赞 2019-04-24 21:30:03
    路径规划中静态路径规划以及动态路径规划。这里仅针对静态路径规划方法进行简单的介绍,以下路径规划仅指在静态环境下的路径规划。 在进行路径规划的时候,我们首先需要考虑的以下几个方面: a.起点与终点的位置...

    一、路径规划的作用
    路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。路径规划中有静态路径规划以及动态路径规划。这里仅针对静态路径规划方法进行简单的介绍,以下路径规划仅指在静态环境下的路径规划。
    在进行路径规划的时候,我们首先需要考虑的有以下几个方面:
    a.起点与终点的位置获取
    b.障碍物的环境表示
    c.规划方法
    d.搜索方法
    二、路径规划需要考虑的几个方面
    1.起点与终点的位置获取
    这个问题很简单,说白了就是我们如何让机器人知道起点和终点的位置。在静态路径规划的情况下,我们通常已知了机器人所处的环境,即地图。而地图则是一个存储着数据的二维数组。这样,我们就可以通过数组的下标唯一的确定数组中的一个或多个元素,即确定地图上的起点与终点位置。当然,在实际的情况中,可能会比这复杂得多,例如机器人在确定自身在地图中的位置时(即起点),会需要其本身所携带的各种传感器,如摄像头,激光雷达,红外传感器,陀螺仪等,通过传感器的数据来感知周围的环境,从而得知自身的位置。因为我们讨论路径规划,所以这部分不会进行很详细的介绍。
    2.障碍物的环境表示
    在进行路径规划的时候,我们需要让机器人知道地图上的哪些区域是可以通行的,哪些是不可以通行的,这样,我们根据一定的规则,就可以避开不可通行的区域,到达目的地。对一个机器人来说,它根据传感器的数据绘制出完整的地图后,就得到了它的活动空间的一个有效描述,即环境模型。在规划前首先要做的就是将环境的描述由外部的原始形式通过一系列处理转化围合式规划的内部的世界模型,这个过程称为环境建模,其中主要的是障碍物的表示方法。合理的环境表示有利于建立规划方法和选择合适的搜索算法,最终实现较少的时间和内存开销而规划出较为满意的路径。不同的路径规划方法正是基于不同的环境建模。
    a.栅格表示法
    栅格法通过使用大小相同的栅格画风空间环境,并用数组来表示环境。每个栅格点或在障碍物空间,火灾自由空间。对于混合栅格点(即一部分是自由空间,一部分是障碍物空间),依据其各自占据的比例将其归属于自由空间或障碍物空间。障碍物在数组中表示为1 ,自由空间表示为0.最短路径是通过搜索这张栅格地图来得到的。规划空间表达具有一致性、规范性和简单性,它同时具有表达不规则障碍物的能力。其缺点是存在着空间开销和求解精度之间的精度。
    栅格地图,二维数组中存储的元素数值就代表了环境中不同的情况
    b.单元数法
    单元数法是为了克服栅格法的缺点。其主要思想是通过将环境空间划分为大小不同的单元来进行环境的描述。常用做法是:将环境空间划分为几个比较大的单元(一般来说,二维空间划分成4部分,称为4×树,三维空间划分为8部分,称为8叉树),其划分的单元的工作空间可能是以下三个部分:自由空间、障碍物空间、混合空间。其优点是自适应性较好。主要缺点是计算单元之间的邻接关系时的损失较大,并且计算的算法实现要比栅格法更加复杂。
    3.规划方法
    为了解决路径规划问题,人们已经探索出很多有效的求解方法。他们不是互相排斥的,并且常常结合起来共同实现路径。大致可以分为两类:传统方法和智能方法。
    a.传统方法
    i— 几何法
    几何法抽取的是环境的几何特征。利用其结合特性将环境空间映射到一个加权(权值可以使两点之间的几何距离)图上,这样就能把避开障碍物的路径规划问题转化成一个简单的图搜索的问题上。基于几何法的路径规划方法一般分为3步:
    1>.在搜索图中找到起点
    2>.在搜索图中找到目标点
    3>.把这两个点用图中不穿过障碍物的折线或曲线连接起来,就得到了一条无碰撞路径。
    几何法包括:
    a.可视图法(Visibility Graph)
    该方法将所有障碍物的顶点(集合为V0)、起始点s、目标点g用直线组合相连,同时要求三者之间的连线均不能穿过障碍物,即直线是可视的,给图中的边赋权值,构造图G(V,E)。然后采用某种搜索方法规划最优路径。该方法在障碍物数目或行状不复杂的时候可以使用,但是当这二者不满足的情况下,所构造的图G(V,E)会成千成百的增加计算量,因此,有些聪明的人将其进行了一些改进,使得它不用保存那么多的信息也可以完成路径规划,这种方法叫切线法。切线法
    可视图
    优点:概念直观,实现简单
    缺点:缺乏灵活性,即一旦起点和目标点发生改变,就要重新构造可视图,且路径不是最优
    b.Voronoi图法
    该方法使用一系列的节点来定义的,这些节点到附近的两个或多个障碍物的边缘是等距的。Voronoi图把空间划分成若干个区域,每个区域只包含一个障碍物的边缘(类似于brushfram方法)
    Voronoi图法
    优点:路径安全性十分高
    缺点:计算量十分的大,路径不是最优
    c.自由空间法
    把环境分成两部分,即障碍物空间和自由空间。用某种搜索策略在自由空间中找到一条路径。按照划分自由空间方法的不同又可分为:凸区法、三角形法、广义锥法。
    优点:路径无碰撞,比较灵活,起始点和目标点的改变不会引起连通图的重构。
    缺点:在某些情况下,路径偏离前景目标太远,另外规划出的路径形态比较复杂,精度不高。
    ii— 单元划分法
    单元划分的典型特征是划分空间与搜索是交叉进行的。这种方法把自由空间划分为一个由简单的单元所构成的集合,各单元之间的连线的邻接关系也同时被计算。首先标识出起点和目标点的所在的单元,再连接两点之间的连续单元格,就得到了一条安全路径。单元的花粉可以依赖障碍物,也可以独立于障碍物。
    对于前者,障碍物的边界用于生成单元格的边界,所得到的自由单元的集合精确的定义自由空间,其优点是:有效的表达了障碍物,最后所得的单元格少,相对于独立于障碍物的单元划分法搜索节点少。其缺点是:单元分解与计算单元之间的邻接关系的开销较大。
    对于独立于障碍物的单元分解,环境空间被划分为一些有规则形状的单元,算法简单。在所有单元中,如没有包含障碍物,称其为空单元:若被障碍物充满,则为满单元,若部分包含障碍物,称其为混合单元。八段元视为节点,其间的相邻关系用弧线连接起来,得到一个网络连通图,于是寻找安全路径问题变为图的搜索。其优点是:划分简单,易于实现。缺点是:
    不一定精确表示障碍物,改善途径是增加单元的数量,就可以提高换分的精度。
    iii— 人工势场法
    实际上是一种拟物方法,模拟自然界中的静电场,流体等。人工势场法
    BrushFire
    iiii— 数学分析方法
    这种方法将由起点到终点寻找最优路径问题转化为求一组带约束条件目标函数的极值问题,将路径规划问题转化成一个函数优化问题。由于这种优化是非线性的,并带有许多种限制条件,故往往使用离散化方法来找到最优解。
    b.智能路径规划方法
    i—基于模糊逻辑的路径规划
    模糊逻辑避障是一种仿人控制过程,其原理就是根据总结的规则确定输出值。该方法最大的特点是参考人的驾驶经验,计算量不大,易做到边运动边规划,能够满足实时性要求。同时克服了势场法的局部最优的问题。其缺点是:人的经验也不一定是完备的;输入量增多时,推理规则和模糊表会急剧膨胀
    ii— 基于神经网络方法的路径规划
    路径规划是感知空间到行为空间的一种映射。映射关系可以用不同的方式表示,但很难用精确地数学方程表示。而神经网络巧妙地避开了这一难题,通过其网络的自学习来达到建立精确模型的目的。缺点是:典型样本获得难度较大,网络训练速度不一,学习机制会有缺陷。
    iii—基于遗传算法的路径规划
    以自然遗传机制和自然选择等生物进化理论为基础,构造了一类随机化搜索算法。他利用选择、交叉和变异等遗传操作来培养控制机构的计算过程,在某种程度上对生物进化过程做数学方式的模拟。其特点为:对参数的编码进行操作而不是参数本身;作为并行算法,在某种程度上适用于全局搜索;是用的是随机搜索过程;对于待优函数基本上没有任何要求,只利用适应度信息。缺点是:运算速度不快进行众多的规划要占用较大的存储空间和运算时间;有时候会提前收敛。
    4.搜索方法
    给定一种环境空间的表示方法(环境的抽象)和规划技术(数学的理论表达)后,求避障路径问题就变成了求解数学问题的最优解的问题,也就是搜索一个从起点到终点的连续节点序列问题。搜索技术分为三类:基于微积分搜索技术、有指导的随机搜索技术和枚举技术。
    a.基于微积分搜索集输
    该技术使用微积分理论求解满足一组充分必要条件问题的最优解。由于方法的理论工具是传统的微积分,因此利用这种搜索技术的前提是目标函数与约束条件要有解析表达式,并且可导。而避障路径规划问题很难归纳出这样的解析表达式。在人工势场方法中,实际上也还是将路径规划问题转化为求解高维度函数的极值问题。这种技术易于陷入局部最优解。
    b.有指导的随机搜索技术
    该技术以枚举法为基础,附加了一些指导搜索过程的信息。其两个主要的子集是模拟退火算法(SAA)和遗传算法(GA)。
    c.枚举法
    该技术是搜索目标函数的域空间中的每一个点,他们实现简单,但可能会需要大量的计算。常用的有深度优先搜索(DFS)、广度优先搜索(BFS)、A*搜索、Dijkstra搜索、波传播算法等。
    波传播算法即是从水波中得到的启发。波传播算法就是模拟了这一过程,将环境视为水面,起点视为石子,这样,水波总能会经过目标点。波传播算法以波形分为矩形波传播算法和圆形波传播算法。

    矩形波

    矩形波传播算优点:简单易行,只要栅格大小选取得当,并且起点与终点之间存在路径,运用该方法一定能找到到一条合适的路径。缺点:路劲不一定是最优。这种方法把路径长短用经过此格子时的波的传播圈数来度量。事实上,路径的长短和经过的波的传播圈数不是严格的单调关系。
    圆形波

    圆形波的传播优点:可以找到比矩形波较优的路径。缺点是:栅格环境下,构造圆形波增加了复杂度。主要难点是圆形波各圈半径的确定。因为栅格的连续和形状,当波圈增加时,其半径等差增加并不是对应栅格个数的等差增加,如果半径增加选择大了,在波覆盖时就会漏掉一些格子;反之如果减小了,不仅会做一些无用的覆盖,而且会大大增加复杂度。实际上,圆形波的提出者的算法并不是真正的圆形波,还是用矩形波来传播,用类似于圆形波的距离概念进行填写的。上述的图片不是太清晰,可以看下面这一个图。在这里插入图片描述
    d.搜索算法的比较
    基于微积分的搜索技术,可分为直接法和间接法,直接法根据目标函数的梯度来确定下一步的搜索方向,如Newton法,共轭梯度法和尺度变换法等。直接法采用的是一种爬山法,即根据最陡的方向爬上一个局部最优解。间接法则从极值的必要条件出发导出一组方程,然后求解方程组再通过比较求得极值,然而导出的方程一般是非线性的,他的求解非常困难,所以,对一些很简单的问题才使用间接法。
    由于遗传算法是一种马氏链过程,虽有一些关于收敛性的研究,但是还是缺乏中肯的分析。
    经典搜索算法中一些算法程序的实现非常简单,搜索出的结果非常接近最优结果,有的甚至就是最优结果。例如A*搜索算法,Dijkstra算法,贪心算法等。其中Dijkstra算法与贪心算法容易陷入局部最优而导致路径很差或路径规划失败,因此需要我们有针对性的运用他们。
    本文还有一些内容没有补充完整,稍后再进行补充。内容大部分参考了一篇论文,以下是原论文的链接:
    参考论文链接http://xueshu.baidu.com/usercenter/paper/show?paperid=08ed3a8e7c2e4c58411bcf4fe43590eb&site=xueshu_se
    待续。。。。。

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    该命令包括了将带当前工作目录当作该光盘中的目录的终端窗口。 chsh 1.作用 chsh命令的作用是更改使用者shell设定,它的使用权限是所有使用者。 2.格式 chsh [ -s ] [ -list] [ --help ] [ -v ] [ ...
  • 内部环境--SWOT分析法

    千次阅读 2019-05-01 10:06:07
    一、SWOT分析的一般方法 SWOT分析是一种对企业的优势、劣势、机会和威胁的分析,在分析时,应把所有的内部因素(包括公司的优势和劣势)都集中在一起,然后用外部的力量来对这些因素进行评估。这些外部力量包括机会和...
    一、SWOT分析的一般方法
      SWOT分析是一种对企业的优势、劣势、机会和威胁的分析,在分析时,应把所有的内部因素(包括公司的优势和劣势)都集中在一起,然后用外部的力量来对这些因素进行评估。这些外部力量包括机会和威胁,它们是由于竞争力量或企业环境中的趋势所造成的。这些因素的平衡决定了公司应做什么以及什么时候去做。可按以下步骤完成这个SWOT分析表:
    (1)把识别出的所有优势分成两组,分的时候应以下面的原则为基础:看看它们是与行业中潜在的机会有关,还是与潜在的威胁有关。
      (2)用同样的方法把所有劣势分成两组。一组与机会有关,另一组与威胁有关。
      (3)建构一个表格,每个占1/4。
      (4)把公司的优势和劣势与机会或威胁配对,分别放在每个格子中。SWOT表格表明公司内部的优势和劣势与外部机会和威胁的平衡。
    在你的企业计划中,一定要把以下步骤都写出来:
       ①在某些领域内,你可能面临来自竞争者的威胁;或者在变化的环境中,有一种不利的趋势,在这些领域或趋势中,公司会有些劣势,那么要把这些劣势消除掉。
       ②利用那些机会,这是公司真正的优势。
       ③某些领域中可能有潜在的机会,把这些领域中的劣势加以改进。
       ④对目前有优势的领域进行监控,以便在潜在的威胁可能出现的时候不感到吃惊。

      二、公司的优势和劣势
      公司的优势是指在执行策略、完成计划以及达到确立的目标时可以利用的能力、资源以及技能。公司的劣势是指能力和资源方面的缺少或者缺陷。
      在为将来做计划时,确定企业的能力和资源代表的是可利用的优势还是劣势,这一点是很重要的。成功的决定因素指的是那些公司成功所必须具备的能力和资源。把这些与成功的决定因素放在一起,就可以形成一个表格,它反过来可以让你做一下比较:你的能力和资源与行业中重要的能力和资源的比较,这将有助于让你识别出公司目前的优势与劣势。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/178883/viewspace-16352/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/178883/viewspace-16352/

    展开全文
  • 近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k下的都会出笔试题 ...同时分享一个自己录制的CSS3动画特效经典案例【推荐教程】--后期会更新vue框架 微信小程序等内容。 https://ke.qq.com/cou...
  • 测试开发需要学习的知识结构

    万次阅读 多人点赞 2018-04-12 10:40:58
    一些视频链接:我这一些软件测试的视频,你可以点开看看。转行互联网测试需要哪些技能? - 假装在测试的回答 - 知乎作为一名软件测试人员,哪些网站是你应该多多关注的,哪些书籍是你必须要看的? - 假装在测试...
  • 2020春工程伦理习题

    万次阅读 多人点赞 2020-03-06 10:23:12
    2.工程活动集成了多种要素,包括技术要素、经济要素、社会要素、自然要素和伦理要素等。将伦理维度运用到其他要素,就形成了工程伦理关注的四个方面的问题,即( ) 工程伦理的责任伦理问题 工程伦理的环...
  • 建模方法(四)-因子分析定义和应用

    万次阅读 多人点赞 2018-08-20 20:58:05
    它通过研究众多变量之间的内部依赖关系,使用少数几个“抽象”的变量来表示其基本的 数据结构。这几个抽象的变量被称作“因子”,能反映原来 众多变量的主要信息。原始的变量是可观测的显在变量,而 因子一般是不可...
  • 2021【软件测试】面试题合集大放送

    万次阅读 多人点赞 2019-09-10 18:04:37
    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。 β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的...
  • 游戏测试_怎么样测试游戏(入门)

    万次阅读 多人点赞 2018-11-15 17:04:19
    游戏测试是测试的一种,逃不开软件测试的魔爪。... 内部测试 内部封测 综合版本不对外测试 限量玩家内测   中期测试 公开测试 不删号测试 不删号测试2期 免费公测   后期...
  • Arduino基础入门篇01—进入Arduino的世界

    万次阅读 多人点赞 2018-07-04 14:37:07
    欢迎来到Arduino的世界,本文主要介绍Arduino的优势,开发所涉及的硬件分类,开发语言及开发环境的下载。可登陆Arduino官网学习了解更多Arduino信息。
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
  • aurix编译环境

    千次阅读 2015-05-29 19:56:26
    aurix作为infineon全新系列的32位单片机,采用tricore架构,相对价格... infineon支持的编译环境包括Tasking、HiTec和windriver的开发环境。都是基于eclipse开发的。这里主要讲下Tasking和HiTec两个,windriver 的dia
  • 软件测试入门知识了解

    万次阅读 多人点赞 2018-09-05 14:59:58
    系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等。 验收测试的目的是向未来的用户表明系统...
  • MyBatis配置文件mybatis-config详解

    万次阅读 多人点赞 2019-11-07 18:58:27
    MyBatis配置文件mybatis-config.xml内容详解 文章目录MyBatis配置文件mybatis-config.xml内容详解一、略解mybatis-config.xml二、详解mybatis-config.xml1. configuration2. properties3. settings4. typeAliases5. ...
  • Python入门学习(第三天)--爬取网站数据

    万次阅读 热门讨论 2019-09-01 13:57:59
    在我们学习Python的第一天和第二天的时候我们已经把Python安装好了,环境配置也处理完毕了,今天我们就来爬数据,用Python总得做点啥是不是,今天我们先爬取网站数据,提高一下我们明天开始学基础的积极性。...
  • Anaconda详细安装及使用教程(带图文)

    万次阅读 多人点赞 2018-08-15 17:48:52
    Anacond的介绍 Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大...Conda是一个开源的包、环境管理器,可以用于...
  • 工程伦理

    万次阅读 2020-02-16 15:17:46
    这个风险来源属于( ) A 工程中技术因素的不确定性 B 工程外部环境因素的不确定性 C 工程中人为因素的不确定性 D 不确定 3 【单选题】 下列不属于内部评估主体的是( )指参与工程政策、设计、建设、使用的主体...
  • 软件测试包括哪些内容

    千次阅读 2017-02-14 15:39:19
    1 得到需求、功能设计、内部设计说书和其他必要的文档 2 得到预算和进度要求 3 确定与项目有关的人员和他们的责任、对报告的要求、所需的标准和过程 ( 例如发行过程、变更过程、等等 ) 4 确定应用软件的高...
  • Python安装的Anaconda套件,该套件包括了常用的Python第三方库,其中就pip,版本: 执行pip install PyMySQL命令时,提示: 之前安装的Anaconda都是在Win7系统按照默认安装的未出现过异常,现在在Win10中出现...
  • 本机win10,使用 phpstudy集成环境,在命令行输入php -v报错了!'php' 不是内部或外部命令,也不是可运行的程序或批处理文件。好吧,然后把php.exe的目录放到系统变量,重启cmd,还是相同错误。好吧,不知道什么原因...
  • 首先maven环境变量: 变量名:MAVEN_HOME 变量值:D:\apache-...刚开始我是在用户变量中配置的环境变量和PATH路径,但是一直提示mvn不是内部或外部命令。后来我将变量设置在系统变量中,就解决问题了。 ...
  • 一、内外之别 Internet网被分成多个域或多个自治系统(AS)。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。...内部网关协议IGP,是在AS(自治系统)内部使用的协议,...
  • Java内部类及内部接口

    千次阅读 2018-06-03 23:02:47
    内部类 普通内部类 应用 静态内部类 局部内部类 匿名内部内部接口 内部类 package Learn.com.seven; public class ParcellA {//外部类 private int pMember;//声明一个私有成员 private static int ...
  • 操作系统之运行环境简介

    千次阅读 2019-03-15 22:02:20
    操作系统的运行环境主要包括系统的硬件环境和由其他的系统软件组成的软件环境,以及操作系统和使用它的用户之间的关系。 一、中央处理器: 1.1 指令 (1)计算机的基本功能是执行程序,最终被执行的程序是...
  • 1、我们在window上安装mysql的时候,在配置中设置了环境变量,并且在系统的环境变量中也看到了我们mysql的bin目录在里面,但在cmd中写命令的时候总是提示“不是内部或外部命令”。解决方案就是:安装完后重启一下...
  • 使用虚拟环境pipenv安装pyQt5时,pipenv在激活时(pipenv...将其粘贴到PATH的后面(引号中的内容包括分号(前面分号不用加,没有分号则加上分号)) 五,最后显示结果如下(绿色括号内为新添加的): 六, 重启CMD即可
  • 01.Win10修改用户名及user文件名称的一波三折

    万次阅读 热门讨论 2018-03-05 04:31:40
    可以预见的,因为修改了user文件夹名称,涉及到Path相关的编译器环境都需要重新关联,简单的一番修改后,满意地在cmd环境中对着Python 3.6的编译器进进出出,我的嘴角勾勒出了一丝满足的yin…微笑。 然而我还是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 600,296
精华内容 240,118
关键字:

属于内部环境包括内容的有