华为西研所实习面经
有没有学过操作系统和数据结构
操作系统里内存是怎么管理的(讲了常见的几种内存管理机制:块式、页式、段式、段页式)
一个进程是怎么使用它的内存(不太了解,我就知道进程通信方式)
主机内存有16G,操作系统跑了100个进程,每个进程都开的16G,该怎么去管理(我感觉可以用页面置换,虚拟内存)
进程间通信方式都有哪些(匿名管道、命名管道、消息队列、信号量、共享内存、套接字)
你在实际项目中用过哪些(说了只有套接字,其实我不会)
你用过哪些操作系统(windows、linux、Mac)
Linux下怎么去创建一个进程(没创建过,就平时装东西,修改配置文件用下命令行)
那你可以试一下你刚说的父子进程,创建一个父进程,再创建一个子进程(好的)
查找为O(1)的数据结构(只知道hash表,数组查找也快)
那你觉得什么时候用数组好,什么时候用hash快(数组随机访问,不适合中间插入删除,hash适合冲突,拉链法,比如hashmap)
那你不应该改进hash算法,不要产生冲突
栈和队列知道吗(先进后出,先进先出)
有哪些适用场景(队列在消息中间件中使用,栈想不起来)
操作系统里也有栈堆,知道吗(只知道jvm的,不知道操作系统内存的)
优先级队列怎么实现的(给任务优先级)
怎么实现,不是怎么使用(红黑树排序),不对,下去把堆也看一下
还有种数据结构堆知道吗(知道)
常用的排序算法有哪些(快排,归并,冒泡,直接插入,选择,堆)
Java 的sort基于什么实现(快排),全都是快排吗(不知道)
常用的查找算法有哪些(只想起来二分查找),时间复杂度(logn)
有啥使用场景(数组有序下使用)
设计模式了解哪些(单例、代理、模板方法、观察者)
Java怎么实现线程安全的单例(饿汉式、枚举、双重检验锁)
多线程的时候为什么会出现线程不安全的情况(我感觉两个都去创建,一个好了,另一个又去创建)
项目中用过多线程吗(没有),可以下去用一下
观察者使用场景(举例了微信公众号)
实际项目中用过哪些设计模式(代理),用来做啥,想不起来,以前还用过单例
什么时候考虑单例(对象只创建一次)
那我把类的方法全部设置成静态方法呢,有啥区别(不知道),下去了解一下静态方法加载机制
OSI分为哪几层(说的挺清楚)
常用协议(TCP、UDP、HTTP、HTTPS、DNS)
为了有了HTTP还要用HTTPS(HTTPS加密)
HTTPS基于什么加密(SSL),SSL是什么(HTTPS运行在SLL上)
那SSL是什么意思(服务端给客户端的支持加密协议的证书),有一些概念不清楚,讲混了,下去再了解一下
Arraylist和linkedlist有啥区别(你还挺清楚)
深拷贝和浅拷贝有啥区别(浅拷贝只拷贝基本数据类型和对象引用,深拷贝拷贝了新的对象)
有写代码去看效果吗(试过简单的)