1、你都了解哪些编程语言,以及他们之间的区别?
c/c++ :大学的时候学过c语言(包含c++),很多语言的底层实现都是基于c,执行效率高,存在问题:自己得做内存管理,开辟还要销毁,对代码要求比较高,内部提供的功能少,它甚至没有字符串。很多功能都需要手动实现
java :高级语言,全球应用最多,比较好的编程语言,很多企业级应用都会选择java【开源】
c# : c shop 是微软开发的编程语言,非常非常简单优雅,在windows上开发的代码部署的时候需要放在windows server 上,最大弊端是window系统花钱。【不开源】,占比越来越低。
PHP:一般用于写网站,写web,快速搭建一个网站
python:非常简洁(比java和c#简洁,java和c#没有函数,必须写个类,学习代价比较大),入门简单,很少的代码做很多的事情【一开始就开源】
Go lang :语法和c比较接近,处理并发时比较有优势 +docker (docker 基于go来做的)
2、如果面试的时候有一个简单的功能让你用指定语言实现,也可直接用python实现
3、构造函数和析构函数
构造函数 用于创建对象的函数
析构函数 用于销毁对象的函数
class Foo(object): def __new__(self, *args, **kwargs): # 这个__new__就是构造函数 pass
class Foo(object): # 这个__new__就是构造函数 def __new__(self, *args, **kwargs): pass #默认有个__del__函数,就是析构函数 def __del__(self, *args, **kwargs): pass obj=Foo() # 构造 del obj #销毁
3、重写和重载的区别
# 重载:函数名相同,而参数的个数、类型、返回值不一样就叫重载,在python里面不支持,其他语言支持 class Foo(object): def f1(self,a1): return 123 def f1(self,a1,a2): return 123 # 重写:在子类中,对父类中的方法进行重写 class Foo(object): def f1(self): print(123) class Bar(Foo): def f1(self): print(666)
4、什么是接口以及和类的区别
# 接口泛指其他语言的接口,python里面没有,如在java里面 以下一个接口,里面有两个方法 Interface IPerson(object) # 这就是一个接口,以大写I开头 def f1(self,a1,a2) # 接口里可以定义方法可以传参数 规定可以定义方法但一行代码都不能写 def f1(self,a1,a2) # public interface Predator{ # boolean chasePrey(Prey p) # void eatPrey(Prey p) # } #接口是以interface关键字开头,内部可以定义方法,但方法中不用写具体方法,他的作用,专门用于约束实现他的类。接口里面有什么方法,类里面也要有这些方法,python里面没有接口 class UserInfo(): # UserInfo类实现了Iperson接口 def f1(self,a1): return 123 def f2(self,a2): return 666
5、 python 的类支持多继承,其他语言不支持多继承(C语言可以)
# python class Foo(Base,NewBase): pass # 其他,只能顺着下来 class Base: pass class NewBase(Base): pass class Foo(NewBase): pass
6、在其他语言中,可以实现多个接口,不可以继承多个类
# java interface IBase: def f1(self) interface INewBase: def f2(self) class Foo(IBase,INewBase): def f1(self): pass def f2(self): pass
7、抽象类和抽象方法
# java class Base(object): pass class Foo(Base): pass
# java 抽象类 abstract class Base(object) # 抽象类 def f1(self): # 普通方法 print(123) def abstract f2(self): # 抽象方法,内部不能写任何代码 print(666) class Foo(Base): # 一旦有一个类继承抽象类,必须重写抽象方法 def f2(self):# 重写抽象方法 print(123) # 上面的类对子类有约束,还为子类提供方法f1 obj=Foo() obj.f2() obj.f1()
8、进程和线程的区别
一个进程中可以有多个线程
进程:是CPU中资源分配的最小单元
线程:是执行单位 ,是计算机中被cpu调度的最小单元