一些易混淆的地方
匿名函数、lambda表达式、闭包(closure)
都是差不多的东西有一点微小的区别,可以当做没区别 在不同编程语言中叫法不一样 闭包 == lambda表达式 + 一些变量
对象和实例
对象 == 实例 , 都一样叫法不同
回调函数和 中断
都是一样的,中断是硬件提供的(依赖于有几个中断器),回调函数是软件提供的(无限个)
GIL 问题 (Global Interpreter Lock)如:python
python的多线程本质上是伪多线程,无法发挥多核cpu的效率(多线程只占单核) 对计算要求高的尽量用多进程 发挥多核cpu性能建议用golang来写,当然用c++来写也可以
java 接口和类 (我有一次面试被问道这个问题了,当时没答上)
都差不多,接口可以当作是阉割之后的类
详细区别如下: 1.接口中只能包含方法。(方法、属性、索引器、事件) 2.接口中的方法不能有任何实现 3.接口中的成员不能有任何访问修饰符(哪怕是public) 4.接口不能被实例化 5.实现接口的类,必须实现接口的所有成员(这里跟抽象类一样) 6.类不能多继承,所以在某些情况下,只能用接口来代替。接口可以多实现(一个类可以继承多个接口,而只能继承一个类) 7.接口的主要目的就是为了实现多态 8.当一个类,同时继承了某个类,并且也实现了某些接口的时候,必须要将继承的类写在第一个(如果一个类同时继承了父类和接口的时候,要把父类写在最前面) 9.当多个类,都具有某个或某几个功能时(方法),但是这几个类型又不属于相同的系列(这几个类型没有共同的父类,就不能用抽象类。),所以这时,为了实现多态就可以考虑把这几个类型共有的方法提取到一个接口中,让这几个类型分别实现该接口 10.当父类实现接口,子类继承父类。那么 接口就可以引用子类 11.不要在一个接口中写过多的方法,避免造成接口污染。可编写多个接口,在每个接口中,分别定义方法 12.实现接口方法的时候,不要有override关键字,直接跟平常定义一样 13.接口方法的显示实现,如果多个接口里有相同的方法名。那么第一个方法名默认的引用的是排在最前面的接口,如果要使用后面接口的方法,就要显示实现:接口名.方法名。访问修饰符是private