阿里的一道binarySearch查找bug
public class TestBinarySearch {
public static void main(String[] args) {
int a[] = {1,2,3,4,5,6,7};
System.out.println(new TestBinarySearch().binarySearch(a, 7));
}
int binarySearch(int a[], int key){
int len = a.length;
int low = 0;
int high = len-1;
while(low<=high){//必须是<=或者>=注意
int mid = low + (high - low)/2;//必须是 low + (high-low)/2 不可以是(low+high)/2注意:防止溢出
if(key > a[mid]){
low = mid + 1;//注意+1
}
else if(key<a[mid]){
high = mid -1;//注意-1
}
else return mid;
}
return -1;
}
}
关于早上唯品会的几道题
一道是关于进程间的通信方式,指出他们之间的特点
(inter-process communication)IPC
主要的 IPC 方法[编辑]
方法 | 提供方(操作系统或其他环境) |
---|---|
文件 | 多数操作系统 |
信号 | 多数操作系统 |
Berkeley套接字 | 多数操作系统 |
消息队列 | 多数操作系统 |
管道 | 所有的 POSIX 系统, Windows. |
命名管道 | 所有的 POSIX 系统, Windows. |
信号量 | 所有的 POSIX 系统, Windows. |
共享内存 | 所有的 POSIX 系统, Windows. |
Message passing (不共享) | 用于 MPI规范,Java RMI, CORBA, MSMQ, MailSlot 以及其他. |
Memory-mapped file | 所有的 POSIX 系统, Windows. |
还有一道就是tip/ip的分层,题目说的是七层结构,还有就是如何用UDP实现TCP的可靠性
应用层, 表示层, 会话层, 传输层, 网络层, 数据链路层, 物理层。
五层结构是:
应用层, 运输层, ip层, 数据链路层, 物理层。
TCP协议和UDP协议特性区别总结:
1. TCP协议在传送数据段的时候要给段标号;UDP协议不
2. TCP协议可靠;UDP协议不可靠
3. TCP协议是面向连接;UDP协议采用无连接
4. TCP协议负载较高,采用虚电路;UDP采用无连接
5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
6. TCP协议采用窗口技术和流控制
关于最后一道题是设计一个链表,可以创建链表,可以打印链表,可以再O(1)的时间复杂度删除一个节点
分析,个人觉得这道题就是坑,我想无论你怎么设计关于链表的设计,删除时有可能时间复杂度为1吗?简直就是坑,有时间再讨论。。。。。