BIGO客户端一面(未完待续)
诶我又来了
- 虚拟内存、虚拟地址是什么,有什么作用?
- 进程间通信机制
1)匿名管道:用于亲缘关系的父子进程或兄弟进程之间。存放在内存中。
2)有名管道:遵循先进先出,可以实现本机任意两个进程间的通信。有名管道以磁盘文件的方式存在。
3)信号:用于通知某个进程某个事件已发生,承载的信息量少。
4)信号量:是一个计数器,记录可申请资源的数量,用于多线程对共享数据的访问。
5)消息队列:消息的链表,由消息队列标识符标识。存放在内核中,只有在内核重启(即操作系统重启)或者显示删除一个消息队列时,才会被删除。消息队列可以实现随机查询,不一定按照先进先出读取,可以按照消息的类型读取。消息队列克服了信号承载的信息量少,管道只能承载无格式字节流、缓冲区大小受限等缺点
6)共享内存:速度最快的方式,多个线程可以同时访问同一块内存,不同进程可以看到对方进程对数据的更新。
7)套接字:主要用在客户端和服务器之间通过网络进行通信,用相关函数完成不同主机之间的通信。Socket完了需要关闭 - 共享内存如何实现
将进程的逻辑虚拟地址空间指向共享内存块中。 随后需要访问这个共享内存块的进程都必须将这个共享内存绑定到自己的地址空间中去。当一个进程往一个共享内存快中写入了数据,共享这个内存区域的所有进程就可用都看到其中的内容。
速度快:访问共享内存区域和访问进程独有的内存区域一样快,并不需要通过系统调用或者其它需要切入内核的过程来完成。同时它也避免了对数据的各种不必要的复制。
需要确保一个进程写的时候另一个进程不会去读,因此需要用到信号量来实现同步与互斥
- 线程池的实现原理
- Java的Object类有什么方法
1)构造函数
2)hashCode和equale函数用来判断对象是否相同,
3)wait(),wait(long),wait(long,int),notify(),notifyAll()
4)toString()和getClass,
5)clone()
6)finalize()用于在垃圾回收
- 重载和重写的区别
1)发生范围。重写在子类中,重载在同一个类中
2)发生阶段。重写发生在运行期,重载发生在编译期
3)重写时,子类的异常只能减少或不变、访问修饰符范围只能更大或不变 - 泛型有什么作用,其生成的.class文件和其他类的class有什么区别
泛型,即“参数化类型”,将类型由原来的具体的类型参数化,然后在使用时传入具体的类型。
1)消除强制类型转换,没有它之前用的Object,一旦忘记转换就报错了
2)类型安全,在编译的时候检查类型安全
3)更好的代码复用性
- Java和C++有什么区别
唉 累了 - 编码题,三个线程ABC,让AB同时运行,C在AB之后运行
- 编码题,连续最大子序列和