一.java/android重要基础知识:
1.重要连接
https://github.com/GeniusVJR/LearningNotes
https://github.com/Mr-YangCheng/ForAndroidInterview
https://github.com/lizhangqu/corelink
2.java常见垃圾回收算法
a.引用计数算法(相互引用问题) b.标记清除算法(内存碎片和线程卡顿问题)c.标记-压缩算法 d.节点拷贝算法
3.http1.0 1.1 2.0协议特点
1.0keep-alive默认是false,一次连接只能发一次请求,1.1keep-alive默认是true可以一次连接发多次请求,解决了请求等待问题 2.0请求延迟做了优化
4.okhttp优点
a.支持连接同一服务器地址共享同一个socket b.通过连接池来减小响应延迟 c.缓存Response减小相同接口重复请求 d.支持http,https请求 缺点:Response在子线程需要自己同步到主线程
5.Volley优点
a.google推出的适合进行数据量不大,但通信频繁的网络操作 b.Response回调在主线程 缺点:不支持https
6.java算法排序
a.冒泡法排序
public static void bubbleSort(int[] numbers) {
int temp; // 记录临时中间值
int size = numbers.length; // 数组大小
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (numbers[i] < numbers[j]) { // 交换两数的位置
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
}
b.快速排序
int main(void)
{
int a[6] = {-2, 1, 0, -985, 4, -93};
int i;
QuickSort(a, 0, 5); //第二个参数表示第一个元素的下标 第三个参数表示最后一个元素的下标
for (i=0; i<6; ++i)
printf("%d ", a[i]);
printf("\n");
return 0;
}
void QuickSort(int * a, int low, int high)
{
int pos;
if (low < high)
{
pos = FindPos(a, low, high);
QuickSort(a, low, pos-1);
QuickSort(a, pos+1, high);
}
}
int FindPos(int * a, int low, int high)
{
int val = a[low];
while (low < high)
{
while (low<high && a[high]>=val)
--high;
a[low] = a[high];
while (low<high && a[low]<=val)
++low;
a[high] = a[low];
}//终止while循环之后low和high一定是相等的
a[low] = val;
return high; //high可以改为low, 但不能改为val 也不能改为a[low] 也不能改为a[high]
}
c.二分法(二分法一定是有序的,即先排序在查找)
public int BinarySearch(int[] array, int T)
{
int low, high, mid;
low = 0;
high = array.Length - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (array[mid] < T)
{
low = mid + 1;
}
else if (array[mid]>T)
{
high = mid - 1;
}
else
{
return mid;
}
}
return -1;
}