Linux
1把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
2终止进程用什么命令? 带什么参数?
3怎么查看系统支持的所有信号?
4搜索文件用什么命令? 格式是怎么样的?
5 查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
答案
1fg 和 bg
2kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
3kill -l
4find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name “string*”
5查找自己所在的终端信息:who am i
查看当前谁在使用该主机:who
Java
1说一下 HashMap 的实现原理?
2说一下 HashSet 的实现原理?
3ArrayList 和 LinkedList 的区别是什么?
答案
1HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根据hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。
需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)
2HashSet底层由HashMap实现
HashSet的值存放于HashMap的key上
HashMap的value统一为PRESENT
3最明显的区别是 ArrrayList底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构是双向循环链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。
python
1列出python中可变数据类型和不可变数据类型,并简述原理
2s = “ajldjlajfdljfddd”,去重并从小到大排序输出"adfjl"
3用lambda函数实现两个数相乘
4字典根据键从小到大排序
5利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
答案
1不可变数据类型:数值型、字符串型string和元组tuple
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用id()方法可以打印对象的id
可变数据类型:列表list和字典dict;
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
2set去重,去重转成list,利用sort方法排序,reeverse=False是从小到大排
3
4
5