二面(80min)
1.首先自我介绍没什么好说的
2.简历上写的语言是C/C++/Python,先讲一下这三种语言的区别吧
其实就是面向过程、面向对象和解释性语言的区别,由于一面问过面向过程和面向对象的区别以及各自的应用场景,因此后来专门查了一下,信誓旦旦地讲完了,结果面试官来了句你讲的这不是根本上的区别,最根本的区别是什么?我懵逼表示没有深入地思考过,面试官说C语言底层是采用goto语句实现程序的跳转,而C++可以用类的接口实现跳转。接着追问那他们跟Python的区别是什么呢,我说Python是解释性语言,balabala扯了几句,面试官还是说这不是根本区别,然后简单跟我讲了下。
后来自己查了下:编译性语言和解释性语言最大的区别就是,编译性语言是整个程序编译完之后才能运行,只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以,程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些;而解释性语言,源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行,程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,运行效率一般相对比较低,依赖解释器,但跨平台性好。
3.类和结构体的区别是什么
我傻傻地问是C++中类和结构体的区别么,面试官说其实我问的是类和结构体这两种结构的区别,你可以用某种语言里的举例,然后我把C++中类和结构体的区别讲了下(默认继承的方式和类能用作模板类参数),面试官表示否认三连,说我说的还是表面的东西,类是引用类型,结构体是值类型,他们的区别是什么?然后才终于明白问题是什么(o(╥﹏╥)o),接着回答两者区别。
4.多进程的通信方式
管道(无名管道和有名管道)、系统IPC(消息队列、信号量、共享内存、信号等)、套接字socket(不同主机间进程的通信)。
知道管道的实现机制吗?不知道。那举个应用的例子吧,比如手机上两个app是两个进