From 3290e495d2eb0ef3dc5fb93377cb9afbab77518f Mon Sep 17 00:00:00 2001 From: nonstriater <510495266@qq.com> Date: Thu, 15 May 2014 18:54:16 +0800 Subject: [PATCH] update --- BAT iOS面试题.md | 43 +++++++++++++------------ 排序算法/README.md | 9 ++++++ 排序算法/insert_srot.c | 2 -- 算法问题选编/README.md | 12 +++---- 算法问题选编/二叉树.md | 2 -- 算法问题选编/数值问题.md | 23 +++++++++++++ 算法问题选编/智力思维训练.md | 7 ++++ 算法问题选编/系统设计.md | 62 ++++++++++++++++++++++++++++++++++++ 8 files changed, 128 insertions(+), 32 deletions(-) create mode 100644 算法问题选编/系统设计.md diff --git a/BAT iOS面试题.md b/BAT iOS面试题.md index 1367736..5bc42f9 100644 --- a/BAT iOS面试题.md +++ b/BAT iOS面试题.md @@ -1,9 +1,9 @@ -1. 面问的主要是知识点。 -2. 面问主要考察的是设计解决方案的能力,另外辅助追问的方式,考察深度和广度,回答过程中需要列出适合的具体例子,方案还需要细致到具体的关键的函数名称,方法。 -3. 考察设计模式的理解,算法 +1面问的主要主要知识点。 +2面问主要考察的是设计解决方案的能力,另外辅助追问的方式,考察深度和广度,回答过程中需要列出适合的具体例子,方案还需要细致到具体的关键的函数名称,方法。 +3面考察设计模式的理解,算法 @@ -85,31 +85,32 @@ asihttp代码原理 ,异步请求的原理,异步请求最大数目,为什 + ### 杂谈 简述push原理,push的证书和其它的右什么不一样? - - -内存寻址方式, -寄存器直接寻址 -基址寻址:方便访问k条记录 -基址+变址寻址:访问一条记录的字段 +autolayout +core data - 比较32位平台和64位平台不同 -内存寻址空间变大 -基本数据类型的长度也会有些变化(long ,longlong, ptr) + +内存寻址方式: +寄存器直接寻址 +基址寻址:方便访问k条记录 +基址+变址寻址:访问一条记录的字段 + + + +比较32位平台和64位平台不同 +内存寻址空间变大 +基本数据类型的长度也会有些变化(long ,longlong, ptr) + + +iphone app为什么会被打回来,如何避免?? +1) 阅读文档 +2) 看别人被拒的原因,吸取教训 -iphone app为什么会被打回来,如何避免?? -1) 阅读文档 -2) 看别人被拒的原因,吸取教训 - - -为啥离开团队? -在小团队里面工作,虽然比较有机会复杂整个项目,有很多的决策权,如项目框架选型,规范等 - “格局” “要求” -当然,我也希望自己身边有一堆牛人,相互学习啦 diff --git a/排序算法/README.md b/排序算法/README.md index b5be62a..374cea2 100644 --- a/排序算法/README.md +++ b/排序算法/README.md @@ -222,6 +222,15 @@ + +如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1) + +空间复杂度为O(1),不表示只有1个或少数几个空间,而是说一个常量空间,可以是几千,几万。。 +这里要求`待排序的数字在限定的范围内如【0,65535】`;这样我们可以使用hash sort,也就是分配一个hash[6535]的空间,初始化为0,遍历一遍,出现的数字就hash[k]++,这样再次遍历一次,就可以得到n个数的顺序了。 + + + + ###小结 diff --git a/排序算法/insert_srot.c b/排序算法/insert_srot.c index 43112cd..c4e7098 100644 --- a/排序算法/insert_srot.c +++ b/排序算法/insert_srot.c @@ -121,8 +121,6 @@ void quicksort(int *a, int left, int right){ quicksort(a,left,i-1); quicksort(a,i+1,right); } - - } diff --git a/算法问题选编/README.md b/算法问题选编/README.md index 91723db..5df973f 100644 --- a/算法问题选编/README.md +++ b/算法问题选编/README.md @@ -29,24 +29,22 @@ -### 堆和栈 - - - - - -### 链表 +### 堆和栈,链表 +这是最基本数据结构,相对容易理解 ### 二叉树 + + ### 图 + ### 海量数据处理 diff --git a/算法问题选编/二叉树.md b/算法问题选编/二叉树.md index efebf78..e6741ee 100644 --- a/算法问题选编/二叉树.md +++ b/算法问题选编/二叉树.md @@ -1,7 +1,5 @@ - - 把二元查找树转变成排序的双向链表 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 diff --git a/算法问题选编/数值问题.md b/算法问题选编/数值问题.md index cfa5f3f..ee5a074 100644 --- a/算法问题选编/数值问题.md +++ b/算法问题选编/数值问题.md @@ -51,6 +51,10 @@ int factorial(n){ #define min(a,b) ((a)>(b)?(a):(b)) #define MIN(A,B) ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __a : __b; }) +这里不能使用比较符号: + +#define min(a,b) ((a)-(b) & (0x1<<31))?(a):(b) + @@ -213,6 +217,25 @@ int one_appear_count(int n); +两个圆相交,交点是A1,A2。现在过A1点做一直线与两个圆分别相交另外一点B1,B2。B1B2可以绕着A1点旋转。问在什么情况下,B1B2最长 + + + + +题目:输入四个点的坐标,求证四个点是不是一个矩形 +关键点: +1.相邻两边斜率之积等于-1, +2.矩形边与坐标系平行的情况下,斜率无穷大不能用积判断。 +3.输入四点可能不按顺序,需要对四点排序。 + + +矩阵式螺旋输出 + + + + + + diff --git a/算法问题选编/智力思维训练.md b/算法问题选编/智力思维训练.md index 5769ae0..847f657 100644 --- a/算法问题选编/智力思维训练.md +++ b/算法问题选编/智力思维训练.md @@ -28,6 +28,13 @@ A说不知道,B说不知道,C说不知道,然后A说知道了。 +“十袋白色粉末,其中有一袋溶于水两分钟以后会变蓝,现在只有四个杯子,无限多的水,要求是在最短的时间内找出这袋特殊的粉末” + +一二三四号粉末放第1个杯子,二三四号粉末分别放在第234个杯子里,五六七号粉末放到2号杯子里,六七号粉末分别放到34号杯子里,八九号粉末放到第3个杯子里,九十号粉末放到第4个杯子里,OK了” + + + + 27.跳台阶问题 题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度。 diff --git a/算法问题选编/系统设计.md b/算法问题选编/系统设计.md new file mode 100644 index 0000000..cd2dff9 --- /dev/null +++ b/算法问题选编/系统设计.md @@ -0,0 +1,62 @@ + + + +系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行 + (1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。 + (2)考虑并行度,怎么设计 + typedef struct{ + int ID; + int * child; + int child_num; + }Task; + 提供的函数: + bool doTask(int taskID);无阻塞的运行一个任务; + int waitTask(int timeout);返回运行完成的任务id,如果没有则返回-1; + bool killTask(int taskID);杀死进程 + + + +设计一种内存管理算法。 + + + + +有不同的手机终端,如iphone,安卓,Symbian,不同的终端处理不一样,设计一种服务器和算法实现对不同的终端的处理。 + + + +A向B发邮件,B收到后读取并发送收到,但是中间可能丢失了该邮件,怎么设计一种最节省的方法,来处理丢失问题。 + + + +设计一种算法求出算法复杂度 。 + + + + +要求设计一个DNS的Cache结构,要求能够满足每秒5000以上的查询,满足IP数据的快速插入,查询的速度要快。 + + + + + +请编写实现malloc()内存分配函数功能一样的代码。 + +用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove +函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。 + +分析:由于可以把任何类型的指针赋给void类型的指针,这个函数主要是实现各种数据类型的拷贝。 + + + + + + + + + + + + + +