文章目录
大全
算法
学习资源
推荐书籍:刘汝佳的《算法竞赛入门经典》,时间充足,使用第二版紫色的,时间紧迫,使用第一版蓝色的。我只剩一个月刷题,所以用了蓝色的薄的那本。
怎么刷:从头到尾读,一边读,一边练,把课后的oj中的题目都做了。反正跟着这本书的节奏来就行了,要刷什么题库,什么oj啥的,这本书里面会讲的很清楚的,慢慢看下去。最好有充足的时间,不要像我一样,只剩下一个月的时间,只能一天一个章节,看不完不睡觉…
必懂的题型:动态规划
2016年北京大学计算机科学技术研究所优秀大学生夏令营上机考前练习
2016年北京大学计算机科学技术研究所优秀大学生夏令营上机考试
数据结构
- 链式和线性哈希
- 线性探测法和伪随机序列法的hash类(自己构造伪随机序列)
- 大数相乘优化
- 三叉排序树
- 最大子串
- 四则运算规则
- 哈弗曼树
- 队列、链表、单调队列等
- 各种排序
- 数据结构题
- dfs
- bfs
- dp
- 简单图论
- 快排复杂度是多少,并且黑板上手写证明。简述如何“快速选到第n个数”(快速选择,复杂度为O(n))。
- 连续最长子序列和(给了一堆正负的数字,任选其中一段连续的数字(可以全选),需要和最大)
- 无向图最长路径(单纯的Dijkstra)
- 给一个表达式,例如 (32+1/2)+12,计算结果
- 给了一棵树求最长的路径(根到叶节点)
- 越界
- 斐波那契额序列(考虑数超级大的情况)
- 大数阶乘
- 给一个类似1+2*3的表达式,计算结果(没有括号,只需要考虑加和乘我记得)
- 构造平衡树
- 普里姆算法(Prim)
- 二叉树最远距离
- 最大子序列和
- 哈弗曼树构造
- 无向图的深度搜索结果是否唯一
- 找出图中从节点s到t总权重小于等于k的情况
- 连续最长子序列和,参考PAT甲级1007题(不要挨个找,要DP)
- 最短路径问题,参考PAT甲级1003题
- 判断一个数学式子是不是合法,就是括号匹配不,运算符合法不
- NP难问题举了例子
- 模拟网站访问
- 最大流
- 递归
- 给一堆区间,找合在一起代表的最大区间
- 给一个字符串,至少插入多少个字符能够让这个字符串变成回文串
- 给定一个正方形,求最终组成的面积大小有多大
- 排序算法
交大计算机题目
第一题是:给了两个数组,分别从两个数组中取一个数组成一个pair,如何组合能让两个数组的pairs的差的绝对值之和最大?这个题目还是比较简单的,一个数组递增排序,一个递减排序,然后依次相减就好了。
第二题是:类似“斐波纳妾”数组判别问题。如,199100199是一个合理的数组,因为拆成1,99,100,199后1+99=100,99+100=199,这个问题我真的不会做,但是想到上交是根据case给分,所以就蒙了一下,我的算法只能判别个位数的斐波纳妾,这样至少能够通过一个case吧。
第三题是:求一个数组中,各元素的右边比这个元素小的数的个数,要求时间复杂度不能是n^2,这就是一个逆序数对的问题,应该用”归并排序”是最快的,而我那个时候脑子里只有动态规划,也根本不知道这个题目是逆序数,于是很天真地用动态规划做了,想着:我的时间复杂度可是n啊!够快吧!最后能有分数应该是也通过了几个cases吧。
数学
考的都是简单题,面试的时候也主要看你对于数学的“悟性”
别去刷题了,就只要给你一个名词你能清楚地讲出来就好。
高等数学
- 线性方程组求解
- 矩阵的运算
- 多远函数极值判断
- 中心极限定理(证明,独立同分布的情况)
- 第一类和第二类错误
- 假设检验
- 原假设和备择假设能否互换
- 当x很小的时候sinx大于什么东西,我印象中是在x趋于0时sinx > x,我就回答了x,然后他看我回答挺快的就问为什么,直接是x-sinx然后求导证明单调就完事了
离散数学
- 数理逻辑。包括命题、公式的等价和蕴含等。
- 集合和关系。包括集合和集合的运算、关系等
- 数函数和递推关系。数函数的母函数、递推关系等。
概率论
线性代数
逻辑推理题
- 4x4的矩阵去掉左上角右下角能不能N个横着或者竖着的方块填满
- 编程怎么实现
-
科研经历
- 能够发表论文的!在面试过程中,科研经历和论文将是一大优势,有时候面试老师就问你科研经历,你如果没有那面试就进行不下去了(有些人没有科研经历,但老师还是一直问,然后都被问哭了)。所以科研经历是仅次于算法的“第二重要”的技能!
- 一个是应用的能力
- 你最近看了什么论文?发表在什么期刊上?作者是谁?
AI
人工智能
弱人工智能:借鉴人类的智能行为,研制出更好的工具以减轻人类智力劳动,类似于高级仿生学
强人工智能:研制出达到甚至超越人类智慧水平的人造物,具有心智和意识,能根据自己的意图展开行动。可谓人造智能
人工智能现在取得的进展和成功,源于弱人工智能。人工智能的国际主流学界所持的目标是弱人工智能,很少有人致力于强人工智能
原因:
- 技术上来说,主流人工智能学界的努力从来就不是朝向强人工智能,现有的技术的发展也不会自动的使强人工智能成为可能
- 人类致力于创造的工具:潜艇比人游得深、火箭比人飞得高,类似的人工智能也在努力制造某种智能行为方面超过人类的工具
- 图像识别、语音识别:机器已经到甚至超过了普通人类的水平;
- 在机器翻译方面,便携的实时翻译器已经成为现实
- 在自动推理方面,机器很早就能进行定理的自动证明
- 在棋类游戏方面,机器已经打败了最顶尖的人类棋手
- 他们都是某种特定类型的智能行为,而不是完全智能。事实上人工智能研究活跃的子领域都是制造人工智能“工具”直接相关的。而对强人工智能必不可少、却与工具不太相关的内容,例如自主心智,独立意识,机器情感之类的罕有严肃的研究
- 人类致力于创造的工具:潜艇比人游得深、火箭比人飞得高,类似的人工智能也在努力制造某种智能行为方面超过人类的工具
- 不知道路在何方,现在有一种说法是如果能够模拟出人脑,把其中的神经元、神经突触等全部同规模的仿制出来,那么强人工智能都会自然产生,但是这种说法没有得到过一点点证明。实际上神经科学家获得目标代码不能还原出源代码,因为这样的反向工程,对软件程序来说是不可能的,更何况神经细胞内部存在分布式表示
- 不应该研究
机器学习的现状和未来
大众的视野里深度学习很热门,其实在领域中顶级学术会议中只有9%的投稿来自深度学习,相关论文总数11%。但是在大众眼中可能有百分之九十。但是未来必定会有其他技术可以达到或者超越深度学习技术目前的地位
神经网络是机器学习的一个分支,在图像视频语音方面取得巨大的成功,这些恰巧在大众比较能了解的方面,造成了大众知道得比较多
目前深度学习看做一种语言,也不是和以前的方法那么截然不同,可以看做一种描述方式,以前很多内容把它用这种方式描述出来,其实今天的深度学习领域已经融入很多以往机器学习中的很多记录。本身其实是相通的,包括一些共性的问题
机器学习的问题:
- 整个中国的人工智能领域可以说是在计算机科学界里面是和国际水平最接轨的之一。但是我们的研究厚度可能不够,比如说我们在某一方面到了一个比较高的位置,但是在其他方面可能还有缺乏,毕竟在这一个领域发展起来还完了几十年
- 机器学习的下一步其实会往各种方向发展,一个大的趋势是因为不同类型的数据会越来越多,所以需要分析的数据也会越来越多。每一个新的任务都需要一种新的技术,可以说是往外辐射的一个状态。往后有很多任务可能都需要新的机器学习技术
- 一个大的趋势是我们要**增加机器学习的鲁棒性。**这个是非常大的需求,因为在目前情况下很多研究中机器能达到人类的水准,甚至比人类的状态还要好。但是如果遇到一些罕见的情况,它会错得非常离谱。在有些应用中,这种情况是大家十分不愿意看到的。例如无人驾驶,开的好时比一般的司机都要好,但是如果表现不好的话,产生的后果就无法估计了。
- 在参数和学习理论上来说是可以做到量化复杂度的方法,但是神经网络的机理存在较多的“trick”。很多人去尝试做,也试出了很多不同的做法。但是做理论分析的门槛非常高,要找到共性的地方,才能做理论分析。现在大家都在盲目去尝试,结果也都还不错,所以相应的理论分析跟不上了。
- 研究学者都戏称“性能不够,加钱来凑”,这种看法其实不是很对——因为增加了层数之后,模型的复杂度更高,可以吃下去更多的数据。但是吃下去之后,模型的性能会不会变好?这个倒不一定。如果本来只需要一百层,你做到一百二十层,其实性能反而会变坏。样本的复杂度和模型的复杂度要恰到好处,过犹不及。
- 我认为目前机器学习领域中最大的问题是基础理论知识没有跟上,更多的人是在做尝试,缺乏比较严格的理论知识。
机器学习
- 先验概率和后验概率
- 贝叶斯
- 正定矩阵
- 线性回归
- SVM
- PCA
- 神经网络
- 聚类
- 贝叶斯分类
- 周老师的西瓜书
- 吴恩达的机器学习课程
- 大数定理、贝叶斯公式等
- machine learning现阶段的问题是什么
- 代价敏感的分类
- KNN的优缺点,KNN怎么做预测的,计算量怎么样
- NB、KNN、logistic、决策树实现,比较分类效果,用多少数据集证明它的判断是好的
软件工程
软件工程
- 什么是软件工程
- 研究软件和研究软件工程有没有什么区别
软件测试
- 用英文解释一下什么事软件测试,必须英文
计算机基础
操作系统
- 死锁:多个进程因循环等待资源而造成无法执行的现象,造成系统资源的极大浪费,无法释放
- 死锁原因(AB互相索取资源)
- 死锁条件(四项)
- 互斥使用:进程对资源进行排他性使用,一段时间内某资源只由一个进程占用。如果还有其他进程请求资源,则请求者只能等待,直到占用资源的进程用毕释放
- 不可抢占
- 请求和保持:该进程已经保持了至少一个资源,但是提出新的请求,而请求资源已经被占用,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
- 循环等待:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
- 处理器管理。包括进程控制、进程互斥等。
- 存储管理。包括分区存储、页式存储等。
- 文件管理。包括文件目录、文件系统的实现等。
- 操作系统线程跟进程的区别等(操作系统的问题比较爱问)
- 多任务
- 多道程序:CPU资源比较珍贵,为了让CPU得到更好的利用,把暂时无需使用的CPU用于其他正在等待CPU资源的程序,称为多道程序。缺点是不分轻重缓急
- 分是系统:改进躲到程序,使得每个程序运行一段时间就主动让出CPU资源
- 多任务系统:操作系统从最底层接管了所有的硬件资源,所有应用程序在操作系统之上以进程的方式运行,每个进程拥有自己独立的地址空间,相互隔离。CPU统一由操作系统进行分配
- 进程
- 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
- 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
- 文本区域存储处理器执行的代码;
- 数据区域存储变量和进程执行期间使用的动态分配的内存;
- 堆栈区域存储着活动过程调用的指令和本地变量。
- 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
- 基本状态:
- 等待态:等待某个事件的完成;
- 就绪态:等待系统分配处理器以便运行;
- 运行态:占有处理器正在运行。
- 状态转换:
- 运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
- 等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。
- 运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
- 就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态
- 进程调度
- 调度种类:高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:
- 高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;
- 中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。
- 低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;
- 调度算法:
- FIFO或First Come, First Served (FCFS),调度的顺序就是任务到达就绪队列的顺序。
- Shortest Job First (SJF),最短的作业(CPU区间长度最小)最先调度。SJF可以保证最小的平均等待时间。
- 优先权调度,每个任务关联一个优先权,调度优先权最高的任务。注意:优先权太低的任务一直就绪,得不到运行,出现“饥饿”现象。
- Round-Robin(RR),设置一个时间片,按时间片来轮转调度(“轮叫”算法),优点: 定时有响应,等待时间较短;缺点: 上下文切换次数较多;
- 多级队列调度:
- 按照一定的规则建立多个进程队列
- 不同的队列有固定的优先级(高优先级有抢占权)
- 不同的队列可以给不同的时间片和采用不同的调度方法
- 多级反馈队列:在多级队列的基础上,任务可以在队列之间移动,更细致的区分任务。 可以根据“享用”CPU时间多少来移动队列,阻止“饥饿”。
- 调度种类:高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:
- 本地进程通信:
- 消息传递(管道、FIFO、消息队列)
- 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)
- 共享内存(匿名的和具名的)
- 远程过程调用(Solaris门和Sun RPC)
- 线程
- 多进程解决了前面提到的多任务问题。然而很多时候不同的程序需要共享同样的资源(文件,信号量等),如果全都使用进程的话会导致切换的成本很高,造成 CPU 资源的浪费。于是就出现了线程的概念。
- 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
- 轻型实体 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。
- 在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。
- 可并发执行。 在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
- 共享进程资源。在同一进程中的各个线程,都可以共享该进程所拥有的资源
- 所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;
- 问进程所拥有的已打开文件、定时器、信号量等。线程之间互相通信不必调用内核。
- 线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。
- 本地进程间通信的方式:
- 消息传递(管道、FIFO、消息队列)
- 同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)
- 共享内存(匿名的和具名的)
- 远程过程调用(Solaris门和Sun RPC)
数据库
-
事务的特性
- A,atomacity:原子性,事务必须是原子工作单元,对于数据的执行要不是全部执行,要不都不执行。如果只执行一个子集,可能会破坏事务的总体目标。
- C,consistency:一致性。事务将数据库从一种一致状态变为下一种一致状态(各种约束不被破坏)
- I,isolation:隔离性。由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。换句话说,一个事务的影响在该事务提交前对其他事务都不可见。
- D,durability,持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
-
异常情况
- 脏读(Dirty Read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。
- 非重复读(Nonrepeatable Read) 一个事务对同一行数据重复读取两次,但是却得到了不同的结果。同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。
- 幻像读(Phantom Reads) 事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据(这里并不要求两次查询的SQL语句相同)。这是因为在两次查询过程中有另外一个事务插入数据造成的。
- 丢失修改(Lost Update)
- 第一类:当两个事务更新相同的数据源,如果第一个事务被提交,第二个却被撤销,那么连同第一个事务做的更新也被撤销。
- 第二类:有两个并发事务同时读取同一行数据,然后其中一个对它进行修改提交,而另一个也进行了修改提交。这就会造成第一次写操作失效。
-
隔离级别
-
未提交读(Read Uncommitted)
- 直译就是"读未提交",意思就是即使一个更新语句没有提交,但是别的事务可以读到这个改变。
- Read Uncommitted允许脏读。
- Read Uncommited 如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。
-
已提交读(Read Committed)
- 直译就是"读提交",意思就是语句提交以后,即执行了 Commit 以后别的事务就能读到这个改变,只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别。
- Read Commited 不允许脏读,但会出现非重复读。
- Read Committed 读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。可以通过“瞬间共享读锁”和“排他写锁”实现。
-
可重复读(Repeatable Read):
- 直译就是"可以重复读",这是说在同一个事务里面先后执行同一个查询语句的时候,得到的结果是一样的。
- Repeatable Read 不允许脏读,不允许非重复读,但是会出现幻象读。
- Repeatable Read 读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。可以通过“共享读锁”和“排他写锁”实现。
-
串行读(Serializable)
- 直译就是"序列化",意思是说这个事务执行的时候不允许别的事务并发执行。完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。
- Serializable 不允许不一致现象的出现。
- Serializable 读加共享锁,写加排他锁,读写互斥。
-
-
海量数据怎么存储
-
索引
- 数据库创建索引能够大大提高系统的性能。
- 第一,通过创建唯一性的索引,可以保证数据库表中每一行数据的唯一性。
- 第二,可以大大加快数据的检索速度,这也使创建索引的最主要的原因。
- 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
- 第四,在使用分组和排序子句进行数据检索时,同样可以显著的减少查询中查询中分组和排序的时间。
- 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
- 增加索引也有许多不利的方面。
- 第一,创建索引和维护索引需要消耗时间,这种时间随着数量的增加而增加
- 第二,索引需要占物理空间,除了数据表占据数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要额空间就会更大。
- 第三,当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
- 应该对如下的列建立索引
- 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
- 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度。
- 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
- 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。
- 在经常使用在where子句中的列上面创建索引,加快条件的判断速度。
- 有些列不应该创建索引
- 在查询中很少使用或者作为参考的列不应该创建索引。
- 对于那些只有很少数据值的列也不应该增加索引(比如性别,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度)。
- 对于那些定义为text,image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
- 当修改性能远远大于检索性能时,不应该创建索引,因为修改性能和检索性能是矛盾的。
- 创建索引的方法:直接创建和间接创建(在表中定义主键约束或者唯一性约束时,同时也创建了索引)。
- 索引的特征:
- 唯一性索引和复合索引。唯一性索引保证在索引列中的全部数据是唯一的,不会包含冗余数据。复合索引就是一个索引创建在两个列或者多个列上。可以减少一在一个表中所创建的索引数量。
- 数据库创建索引能够大大提高系统的性能。
-
高维空间相交的线映射在低维空间,是否一定相交(直接取部分坐标,线性映射,必然相交)
-
生产者消费者模型
-
几个范式
-
锁:
- 共享锁(S锁):用于只读操作(SELECT),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他的用户写和修改。
- 更新锁(U锁):用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。
- 独占锁(X锁,也叫排他锁):一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享缩。写是独占锁,可以有效的防止“脏读”。
计算机网络
- 物理层。波分复用、频分复用等
- 数据链路层。以太网及MAC等。
- 网络层。IP、BGP、OSPF、RIP。包括数据报文格式等。
- TCP UDP区别,在实际中的应用:TCP要经过三次握手,消耗的资源会比较多,通常只有当我们确保能够传输到的时候才会用到TCP协议,比如说收发邮件。而UDP就比较方便,消耗的资源也比较少,但是不可靠,可能出现丢包,平时看视频聊天什么的用UDP协议,因为丢个一辆帧不会有太大影响。端口
- 链路层网络层传输层的作用
计算机组成原理
- 冯·诺依曼体系结构:
- 计算机处理的数据和指令一律用二进制数标傲世
- 顺序执行程序
- 计算机硬件由计算器、控制器、存储器、输入设备和输出设备五大部分组成
- 数据的机内表示
- 二进制表示
- 原码:符号位加上真值的绝对值
- [+1]原 = 0000 0001
- [-1]原 = 1000 0001
- 反码:正数的反码是本身,负数的反码在其原码的基础上, 符号位不变,其余各个位取反
- [+1] = [00000001]原 = [00000001]反
- [-1] = [10000001]原 = [11111110]反
- 补码:正数的补码就是本身,负数的补码在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1)
- [+1] = [00000001]原 = [00000001]反 = [00000001]补
- [-1] = [10000001]原 = [11111110]反 = [11111111]补
- 定点数与浮点数
- 定点数是小数点固定的数
- 浮点数是小数点可以变动的数,类似于十进制中的科学计数法
- 计算机中通常分为阶码和尾数表示,阶码一般用补码定点整数表示,尾数一般用补码或者原码定点小数表示。
- 原码:符号位加上真值的绝对值
- 位(Bit)、字节(Byte)、字(Word)
- 位:电子计算机中最小的数据单位。每一位的状态只能是0或者1
- 字节:8个二进制位构成1个字节,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
- 字:"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。
- 二进制表示
编译原理
云计算
- 云计算的三层:PAAS(platform),SAAS(software),IAAS(Infrastructure)
英语
自信,处事不惊、遇事不慌,展现出最真实的自己–我知道的就好好回答,我不知道的就说不知道,难道因为我这个问题不知道你就否定我?我的能力在那里,只是你没有问到点子上。面试的时候切勿慌慌张张,很自然的肢体语言,很从容的笑容,响亮的回答都是给你加分的点。毕竟能够保研的同学都是不差的,所以你的思考方式,处事态度成为很重要的评判标准。
彻得好,并不是胡说八道,而是能够很好的转移话题,或者说牵引着面试官提问。当一个问题回答不出的时候,不妨大胆说,这个问题我不知道,但是我知道…把话题牵到你知道的领域。面试只有这么几分钟,应当在这几分钟内,最好的表现出自己知道的东西。
全程英文面试
阅读能力
阅读文献摘要讲解大概内容
写作能力
翻译一段话
英文面试问题
- 自我介绍
- 项目
- 学科
- 未来研究方向
- 介绍喜欢的课程
- 介绍学校
- 介绍学院
- 研究兴趣
- 介绍自己的家乡。
- 英文说一下最短路算法思路
-
项目
项目问题
- 多少行代码
- 主要负责什么
- 数据收集吼处理起来最难的点在哪里
- 如何识别结构化数据和非结构化数据
- 如何处理非结构化数据
- sensor的问题
- 自己的motivation是什么
- 在团队中有什么优势
个人情况
本科院校:上海同济大学
专业排名:9%
GPA:4.62/5
英语:六级517
荣誉:两次国家励志奖学金,一次优秀学生一等奖学金,一次优秀学生二等奖学金,国创,两次获得校“优秀学生”称号,“顶尖移动应用开发”二等奖
学生工作:软件学院学生会
科研相关:
<数学建模>
本人自大二上开始接触数学建模到现在,已经参加过三次国家级或国际级数学建模比赛,并在今年的国际数学建模比赛当中获得了国际一等奖。通过这么多次数学建模的比赛,不仅了解了很多相关算法比如线性回归,SVM,PCA,神经网络,聚类,贝叶斯分类等等。充实了自己的科研能力,而且对于论文的撰写,通过这几次的建模比赛也有了一定了解。
<算法>
本人自大二下开始自行的学习算法,并参加了acm相关比赛,在2015年辽宁省acm省赛中获得省一等奖,并在今年的蓝桥杯全国总决赛中获得全国二等奖。在算法的学习过程中,锻炼了个人的编程能力,加强了对于数据结构,算法的了解。通过一次又一次的练习赛,现场赛,网络赛,省赛,以及区域赛的锻炼,在意志和团队协作上有了极大的提高。
项目经历:
国家创新项目
SITP
ACM校赛二等奖
“顶尖移动应用开发”二等奖
上海市“创造杯”大学生创新创业比赛决赛
博世黑客马拉松大赛优秀项目奖
社会活动:
微软hackthon参赛
bosch hackthon优秀项目
院学生会骨干
资料
除了成绩以外,你的简历和个人陈述还得“吹下牛逼”,但是不能吹大了,得把你自己牛逼之处展现出来。成绩+简历+个人陈述将作为评定你是否入营的标准。
本科阶段成绩单(由教务部门盖章)1份,前两年半总评成绩排名证明(见附件四,由教务部门盖章)1份
个人陈述(关于个人学术背景、曾经做过的研究工作以及未来学习和研究的计划、目标等)
专家推荐信3封,即需要3位副教授(含)以上职称的专家分别推荐,且密封并在封口骑缝处签字(见附件三)
其他证明材料(如体现自身学术水平的代表性学术论文或其他原创性工作成果复印件、获奖证书复印件等)
简历
- 个人基本情况
- 研究方向,你得让老师知道你想读什么方向的吧
- 学业情况,你的排名啊,绩点啊(稍微夸张了一点儿啦)
- 专业技能,你会点儿啥(学过一点儿的,我都往上写了…)
- 项目和科研经历,我们软件工程的话,项目做的可能多一些,有科研的话那真是极好的。我两样都不多,所以项目上,我把实验课和东软实训的都写上去了
- 社会活动,你是一个社会人,得积极参加社会活动来体现你的社交能力等
- 个性和爱好,可有可无,我只是为了凑字数,不然空了一块不好看
个人陈述
就是讲了一下自己的研究兴趣,这个兴趣是如何产生的,自己为之做了多少努力,然后我们这个专业很特殊,是什么样的…基本就是这一些,最有总结,我真的很想来你们学校,为什么等等。
在这之后我联系过ADAPT Lab in SJTU的老师Kenny Zhu,人特别好。他会给申请的学生一篇学生自己感兴趣方向的或者跟每个人简历更相关的论文(跟实验室方向相关)(当天晚上10点左右给,第二天下午6点前发到他邮箱),看完之后写summary、Strengths、weaknesses,通过的话之后就是视频面,问些专业问题、问简历以及闲聊。如果视频面你也过了,那么你已经得到允许进入ADAPT Lab in SJTU了,但是前提是你要拿到夏令营资格或者九月份上交保研资格。
学校
如果能去清北,必去清北,清北永远是第一梯队;中科院计算所、自动化所、软件所和上交、浙大,这五个其实都差不多,都属于第二梯队;而第三梯队就如北航、南大、哈工大、华科、复旦等。
所以一定要和导师联系,否则你就进不了你想进的实验室。
比较热门的方向有“机器学习”、“深度学习”、“数据挖掘”、“大数据”等,如果考虑它们的应用领域的话,那么就更细了比如“社交网络的机器学习”、“多媒体数据的机器学习”、“自然语言处理”等。
北京航空航天大学:(吐槽)北航没有网上报名系统,只是通知邮寄材料,我用EMS邮寄过去,最后收寄结果显示的是一个不知道的地方收的,我打电话给快递员他说这个地方就是向北航送快递的,我以为是的,最后入营结果出来,我和邱同学都没有录取,而是好几个(并不是说他们不好)排名在我们后面并且竞赛也比一定比我们多的同学入营了,邱同学打电话过去问,那边说是核查之后没有收我们材料的记录,也就是我们的材料没有寄过去,那边还说”焉知非福,九月在来吧”。(fuck我不知道是EMS不靠谱还是北航把这不当回事)瞬间对北航没有什么意愿了,不去拉倒。
清华大学:准备好材料之后就寄过去了,网上也能看到状态,比北航好多了,最后入营结果快6月底才出,有点慢,但是最后看到名单里有我,还是非常高兴的,毕竟我们专业只有两个人进了。100多人入营,比例大概15%左右。
北大叉院:在等到入营结果出来之后,我没有收到邮件,也就是被刷了,但是我又打电话去问那边说已经确定了,如果有补录会考虑我,最后真的有人学校考试冲突去不了有补录,然后我就去了。机会都是争取来的,给学校那边打电话多问问。这是在刷了之后还有的最后一线希望。
上海交通大学:感觉上交有点傲娇,入营感觉很有难度,我们专业只有第一名入营了(他最后没去),而且听说给外校的学术型硕士名额极少,基本只要直博生,我们专业好像好几个确定去直博。
南京大学:网上报名之后,一段时间之后发邮件通知说通过筛选了,需要网上确认入营然后邮寄材料。
北大信科:结果出来的最晚的一个,最后被刷了,听人说是那边看到清华名的单了入营清华的都不要(不全是,除非你特别厉害)我们专业只有第五名的同学入营。
中国科学技术大学:不需要邮寄材料,全部扫描成电子版在网上提交,最后我们专业就我入营,好像是1200多人中筛选了120左右的人,大概10%的入营比例。
LAMDA
提交申请材料时间:2018年5月20日前
面谈通知时间:2018年6月1日;面谈时间:2018年6月xx日
lamda看网页和招生信息,提前关注,提前准备
具体招生情况详见此网址:https://cs.nju.edu.cn/zhouzh/zhouzh.files/recruit.htm
注意事项:http://cs.nju.edu.cn/zhouzh/zhouzh.files/fornewstudent.htm
Lamda官网:http://lamda.nju.edu.cn/CH.MainPage.ashx
俞扬老师:他们提前给一篇论文,看完做ppt之类的讲(该老师允许霸面)
李武军老师:没问太多,聊聊天,基本是之前看完简历已订下人选。(该老师不允许霸面)
面试问题:https://blog.csdn.net/JacobKong/article/details/55670613?locationNum=11&fps=1
材料申请和lamda面试
非常看重数学和英语能力。它会让你填写3个导师的志愿,你可以到Lamda官网去查询每个导师的详细资料。选定了导师之后,你的材料就会交给这三个老师审核,如果哪个老师对你感兴趣,你就可以去他那儿面试,当然可以同时面试多个老师。面试完成后如果有老师要你,那么你将被Lamda录取,但是你还是得通过南大夏令营的选拔,你才能正式进入Lamda。面试的时候,不同的老师有不同的风格,有些老师是全程英文面试,而有的老师则就是闲聊,有的老师会让你阅读一篇有关机器学习的英文论文,然后做一个十分钟的PPT。
顺便说一句,即使简历筛选没有过,你还可以给俞扬导师发邮件,他会让你去参加他的面试,当然你得足够优秀,才能被录取。一般一个导师带3个,并且其中一两个名额是就给本校学生的。而笔者就是面试的俞扬导师,18个人选3个,然后顺利的挂了.·
\1. 把俞扬老师给的论文讲一遍,PPT展示
\2. 面试的人有大概10个左右,除了俞扬老师,其他都是他实验室的学生
\3. 俞扬老师没怎么问问题,就问了一个“ε-greedy”算法中ε取值的问题
\4. 他的学生,按照简历中的问题提问,看我自学了斯坦福机器学习的课程,就问了一些情况,然后问我现在在学校实验室从事什么工作,有哪些成果了。
*LAMDA的面试不是说问题都回答出来的就好了。个人觉得,首先通过论文讲解看你的理解能力,能够理解到什么程度。然后之后的面试提问是了解你目前的学术背景。面试只是能否被录取的冰山一角,其实你的简历,你的学术经历,你的成绩,你的思维方式,你的态度等等都是考核内容。反正就把真实的自己展示出来就好,录取了说明你适合这个实验室,没有被录取只能说明你不合适,而不是不够优秀,带着这样坦然的心态表现自己一定能被录取到一个最适合你的地方!
夏令营
机试
南大夏令营只有两个环节,机试和面试。机试是4道算法题(只需完成两道),OJ的形式,主要考察“动态规划”、“树和图论”、BFS、DFS等。只要你看了《算法竞赛入门经典——第二版》,在OJ上刷了题,那么将没有任何问题。不过机试时,是实时排名的,没有罚时,使用C/C++语言,做的多、做的快排名就高。机试占了很大比重,所以算法一定要掌握。
面试
而面试其实就是考察你的专业知识,问的最多的就是离散、数据结构等。当然也会问一些其它的问题,那范围就比较广了。其中会有英文考核的环节,也无非就是英文回答问题、翻译、阅读摘要并总结。这个面试不要紧张,那些面试官都很和蔼的。
面试的步骤
\1. 英文能力:有很多种类型,有英文介绍的,也有翻译论文的(英译中),我抽到的是论文翻译。没有上下文,只有一句话,表面意思能看懂,但是翻译超奇怪,然后我就说,这个我翻译不好。
\2. 专业知识:因为我是机器学习方向的,所以问了一个“大数定理”,然而早就全忘记,我说老师我没学过,现在想想老师心里一定是懵逼的…然后问了一个“有监督学习”的问题,给了一个医院化验的背景,问我如何用神经网络求解,训练集怎么设置,最后结果怎么分析。这个答得还是可以,毕竟还是学过一些。最后问了一下对“人工智能”的看法,其实之前从来没有想过这个问题,但是面试前去和一个老师交流了一下,正好那个老师提出了他对AI的看法,于是我就套用咯,我说现在人工智能是weak AI,balabala……
\3. 科研经历:问了一下在学校里做了什么工作了。
面试的气氛相当融洽,说说笑笑。最后面试得了一个“优秀学生奖”。但是没有被预录取,因为机试得了0分…
资料撰写
兴趣。如果你花几年做自己不感兴趣的事情,其过程会很痛苦,所以建议先调研一下LAMDA感兴趣领域,看自己是否真的喜欢在那个方向做研究。
动机。也就是说,你最好事先有很完善的职业规划,不要只是找一个避风港逃避就业。先想好自己的目标是什么,需要什么,进LAMDA学习能不能满足你的需求,然后再报考。
- Topic。首先,你得搞清楚你要研究的对象是什么,可以是导师给你的也可以是自己去发掘的。导师有丰富的领域经验,可以告诉你哪些topic更值得花时间去深入研究。
- Problem。然后,你得搞清楚,你的研究解决的是什么问题。导师可以帮你判断你要解决的这个问题是否有价值。
- Idea。再然后,你得有思路去解决要研究的问题。导师可以帮你判断你的想法是否可行。
- 最后,把研究做起来吧…
从中可以看出,LAMDA的论文都是“做”出来的,而不是“写”出来的。
为什么LAMDA会有那么多高质量的Paper?
一方面,很多老师就是领域内的专家,深入研究了很多年,经验丰富,知道哪些问题值得去研究。这样学生花费精力做研究的时候,就不至于把时间浪费在了没有价值的事情上。另一方面,LAMDA也有很不错的学生培养体系,提升学生的知识功底,学生的大把时间也都用在做研究上。人的精力都是有限的,把有限的精力用在刀刃上,自然产出的质量就高了。
就是邮件联系一位导师之前要好好读至少一篇他的论文,然后整理好阅读笔记一起发过去。
简历上千万不能写划水项目,写了的每句话都要做好被提问的准备
请对我这次的面试做个评价
交大计算机
上交的机试比较原始,不是在线测评。发下一份纸质的答卷,一共3道题,用vs2008或者CodeBlocks编程,考试结束后老师用U盘一个一个来拷贝。嗯,大家做的很慢,我做的很快,超级快!!!一共给了3个小时,我1个小时就做完了!因为我只会做第一道啊…
上交的录取,第一,看成绩,因为专业第一、二名才能获得夏令营的资格;第二,看机试,机试成绩不能太差,做出一道必须的,上交的机试是有步骤分的,所以能得一点儿是一点儿;第三,面试咯,面试一定要诚实哦,表现得越自如越好,不要紧张,谈笑风生更好哦,反正就是把真实的自己表现出来,
北大cha院
前沿交叉学科研究院(绩点前10%)
报到时间为7月10日下午:13:30-16:30
夏令营时间:2018年7月11日-13日
网上申报截止时间为6月6日00:00。
北大信科
夏令营时间:2018年7月16日-18日
注意北大信科夏令营只招直博,你要是不想读博就别报了。个人建议不要为了名校而读博,在选择是否读博时一定要慎重,这可是大事,不要跟风,人家愿意读博,可能人家已经下定决心要搞学术,而你读博的原因却是“跟风”!!!如果说北大博士和北航硕士,专业都是比较火的机器学习,笔者会选北航硕士!
资源
保研论坛:http://www.eeban.com
导师信息网:https://www.mysupervisor.org
保研通APP:http://www.973.com/xiazai/60337
保研论坛APP:https://www.7down.com/soft/175489.html
建议最好是将所有的推荐信都准备好,需要某一个老师签的所有信一次拿过去给他让他签了,然后再去找其他老师。
最后在附件中附上简历,成绩单和排名证明足矣
计算机
- 前端各种控件
- 文件各种操作
- 前后端文件交互
- JAVA各种数据类型以及使用方法
各种材料:
北大信科
http://kaoyan.eol.cn/bao_kao/tuimian/201805/t20180504_1598512.shtml
EMS或顺丰快递,不接收到付的快递和包裹
邮寄材料寄达截止时间为6月12日
活动时间:2018年7月16日-18日
-
1.“北京大学2018年全国优秀大学生夏令营申请表”1份(网上填写生成)。
-
2.个人陈述1份(请使用模板);
-
3.专家推荐信(请使用模板):硕士项目申请者请提供2封,博士项目申请者请提供3封,均需副教授及以上职称专家分别推荐,且密封并在封口骑缝处签字;
-
4.本科阶段包含所修全部课程的正式成绩单原件;
-
5.本科阶段前两年半成绩排名证明(需由教务部门盖章);
-
6.英语水平证明(成绩单)复印件;
-
7.获奖证书(如有)复印件;
-
8.发表文章或研究成果(如有)复印件;
交大
直博报名截止时间为2018年5月20日,直硕报名截止2018年6月24日。
-
1.自主招生书面申请表(入围后将邮件发送,“专业排名”栏加盖教务部门公章);
-
2.本科成绩单原件(需加盖所在学校或学院教务部门印章);
-
3.英语水平CET6或TOEFL或IELTS的复印件(携带原件现场验证);
-
4.获奖证书复印件;
-
5.在学或工作期间科研成果(含已取得的专利)、公开发表的学术性论文或专著等复印件;
-
6.身份证复印件和学生证复印件(携带原件现场验证)。
-
7.报考上海交大电子信息与电气工程学院直博承诺书(申请直博必填,入围后邮件发送);
北大叉院
http://www.aais.pku.edu.cn/tongzhi/shownews.php?lang=cn&id=595
活动时间2018年7月11日至13日
截止时间为6月5日
-
1、北京大学前沿交叉学科研究院2018年夏令营申请表1份(见附件一)
2、个人陈述(关于个人学术背景、曾经做过的研究工作以及未来学习和研究的计划、目标等)1份(见附件二) -
3、专家推荐信3封,即需要3位副教授(含)以上职称的专家分别推荐,且密封并在封口骑缝处签字(见附件三)
4、应届本科生需提供本科阶段成绩单(由教务部门盖章)1份,前两年半总评成绩排名证明(见附件四,由教务部门盖章)1份 -
5、往届本科生,应届/往届硕士生需提供历年在校学习成绩单(本科和硕士阶段,由教务部门盖章)1份
-
6、体现自身英语水平的证明(如国家英语四、六级考试成绩、或TOEFL成绩、雅思成绩与GRE成绩等复印件)
-
7、学位,学历证书的复印件(往届生提交),境外获得的学位证书须提供教育部留学服务中心的认证书。
-
8、其他证明材料(如体现自身学术水平的代表性学术论文或其他原创性工作成果复印件、获奖证书复印件等)
清华
http://kaoyan.eol.cn/bao_kao/tuimian/201805/t20180504_1598496.shtml
夏令营报名申请工作于5月1日开始,5月15日结束。接收的申请材料以5月15日邮戳为准。
博士夏令营拟于2018年6月9-10日在北京
2018年5月25日前以邮件方式向获得入营资格的人选发放入营通知
-
1、夏令营申请表1份(表格请见“原文链接”中的附件1);
-
2、在线填写夏令营报名信息并提交,报名网址:http://cn.mikecrm.com/22dWKk9
-
3、学生证和身份证复印件;
-
4、专家推荐信2封(请见“原文链接”中的附件2)(需要2位副教授以上职称专家分别推荐,原件密封并在封口骑缝处签字);
-
5、本科前5学期或前6学期课程学习成绩单,并加盖学校或学院教务部门公章;
-
6、英语水平证明复印件;
-
7、各类获奖或科研经历的相关证明文件复印件。
复旦计算机
http://www.cs.fudan.edu.cn/?p=23278
2018年7月9~13日在复旦大学张江校区举行
邮局以EMS快递方式邮寄
入围名单工作将在6月30日结束
2018年5月7日8:00至6月8日17:00
-
① 在夏令营申请选拔系统中打印的夏令营申请表,需学生本人签名,学校教务部门或院系填写推荐意见,并在“成绩排名”和“推荐意见”栏盖公章;
-
② 本科阶段前3年(或前5学期)成绩单;
-
③ 两封专家书面推荐信(系统中打印后由专家填写);
-
④ 必要的其他证明材料复印件(如已发表的论文、各类获奖或资格证书、CET四、六级等各类英语考试成绩单)
南大计算机
https://cs.nju.edu.cn/ea/b2/c1654a256690/page.htm
- 活动时间:2018年7月24日~26日
- 报名开始时间:2018年4月20日8:00;
- 报名截止时间:2018年6月20日23:59;
- 报名方式:网上填写并提交“2018年全国本科生开放日申请表”申请表(本科生开放日报名网站:http://csopenday.nju.edu.cn/)。
材料:
-
a、身份证、学生证、大学英语四、六级考试成绩单(均需复印件,原件在开放日时带来备核);
-
b、在校历年学习成绩表及排名证明(由所在学校教务部门提供并加盖公章);
-
c、获奖证明和发表成果复印件。
LAMDA
https://cs.nju.edu.cn/zhouzh/zhouzh.files/recruit.htm
提交申请材料时间:2018年5月20日前
面谈通知时间:2018年6月1日;面谈时间:2018年6月xx日
- 带照片的个人简历
- 本科成绩单(申请硕士生)
- 一页纸的“研究动机说明”
- 有助于增进对您了解的其他材料
- 申请硕士生请填报三位导师志愿及是否服从分配
中科院软件
1)网报系统生成的《中国科学院大学2017年大学生夏令营申请表》一份(须本人签字);
2)在校学习成绩单及专业排名证明原件(如无排名证明,可暂不提交);
3)英语六级(或四级)成绩单复印件或其他能说明自己英文水平的证明材料;
4)一封专家亲笔推荐信(附件1)
5)其它本人自愿提交的能体现本人科研素质与能力的材料(如已发表的论文、获奖证书等)。
中科院计算机
-
1)网报系统生成的《中国科学院大学2017年大学生暑期学校申请表》一份(须本人签字);
-
2)在校学习成绩单及专业排名证明原件(如无排名证明,可暂不提交);
-
3)英语四六级成绩单复印件或其他体现自己英语水平的证明材料;
-
4)两封教授或相当职称以上专家推荐信(见附件);
-
5)其它能体现本人科研水平及工程能力的材料(如已发表的论文、获奖证书、已获得的专利等材料)。