博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
技术面试可能会考到的知识点
阅读量:5040 次
发布时间:2019-06-12

本文共 1803 字,大约阅读时间需要 6 分钟。

1. Mutex(互斥量) vs Semaphore(信号)

      a. Mutex和Semaphore的主要区别是什么?count为1的semaphore是不是就是mutex?

           严格来讲,mutex是锁的机制,semaphore是信号的机制。

           mutex(locking mechanism)相当于给资源(resource)加了一把锁,每次只有一个task能够获取锁(mutex).也就相当于,获得这个锁的task就是这把锁的拥有者。只有它能够释放锁

           Semaphore(signalling mechanism)可以有多个。某个资源可以有多个semaphore,当被取走了一个,计数就减一。还回来一个,计数就加一。但是semephore不像mutex那样有一个拥有者。也就是说,当你听歌的时候,如果有电话打进来,会有阻断的机制终止听歌,然后把电话处理唤醒。这里存在一个Interrupt Service Routine(ISR)。

      b. 理论上来讲,mutex是允许递归的。递归的情况下,mutex可以锁多次。但它释放的时候也必须依次返回获得的锁操作。鉴于递归(recursion)这个概念的      特殊性,每个mutex仍然是独立的。与mutex,0或1,的特性不冲突。没有递归,mutex不可以被多次锁,否则就死锁了。

      c. 进一步的概念:critical section(临界区)

2. Hash Table(哈希表)

      a. HashTable的弊端: 浪费存储空间。一般来说,有一半的空间会浪费掉。存储的元素越多,发生哈希冲突hash collision(哈希冲突)的概率越大。可以一开      始开辟个小一些的空间,当元素越来越多的时候可以动态扩展。但仍然会浪费一些空间。

      b. hash collision(哈希冲突)的解决办法:

                 1. Open addressing(开放地址): 发生冲突的时候继续检测可用位置(bucket),直到找到位置可以放为止

                 2. Seperate chaining(链地址): 给冲突的位置设置一个链表,把该位置冲突的元素全都放进相应的链表里面

 

3. 实现HashTable的一个简单例子

      代码引自: http://www.algolist.net/Data_structures/Hash_table/Simple_example

public class HashEntry {     private int key;     private int value;     HashEntry(int key, int value) {          this.key = key;          this.value = value;    }      public int getKey() {          return key;    }    public int getValue() {          return value;    }}public class HashMap {    private final static int TABLE_SIZE = 128;    HashEntry[] table;    HashMap() {         table = new HashEntry[TABLE_SIZE];         for(int i = 0; i 

 4. TCP/IP 和UDP

     TCP:是面向连接的、可靠的、全双工的数据流传输服务。TCP会在接收端保证所有数据包都被接收而且有序。如果有丢失,会重发。

         It is a reliable protocol which can check data at receiver to ensure ordered packets. Re-send if any missing happened.

     UDP: 面向无连接的、不可靠的传输层协议。Does't guarantee reliability nor order。(communication protocol)

5.

 
 
 
 
 
顺便推广自己的微店---美国加拿大留学申请咨询
 
 

转载于:https://www.cnblogs.com/jianghewade/p/4295995.html

你可能感兴趣的文章
建造者模式(屌丝专用)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
C++的引用
查看>>
python itertools
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
文件操作
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
graphite custom functions
查看>>
ssh无密码登陆屌丝指南
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
oracle连接的三个配置文件(转)
查看>>
Java 8 中如何优雅的处理集合
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Centos下源码安装git
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
[置顶] 细说Cookies
查看>>
[wp7软件]wp7~~新闻资讯,阅读软件下载大全! 集合贴~~~
查看>>
web前端java script学习2017.7.18
查看>>