top of page

Computer Science
Computer Science, 计算机科学,缩写为CS, 是仅几年继商科之后,最受欢迎的专业之一, 主要是系统性研究信息与计算的理论基础以及它们在计算机系统中如何实现与应用的实用技术的学科。它通常被形容为对那些创造、描述以及转换信息的算法处理的系统研究。计算机科学包含很多分支领域;有些强调特定结果的计算,比如计算机图形学;而有些是探讨计算问题的性质,比如计算复杂性理论;还有一些领域专注于怎样实现计算,比如编程语言理论是研究描述计算的方法,而程序设计是应用特定的编程语言解决特定的计算问题,人机交互则是专注于怎样使计算机和计算变得有用、好用,以及随时随地为人所用。
领域划分
Artificial Intelligence
在计算机科学中,人工智能(AI),有时也称为机器智能,是机器展示出的某种程度上的智能。它与人类和动物展示的自然智能形成鲜明对比。计算机科学将人工智能研究定义为对“智能体”的研究:任何能够感知其环境并采取行动以最大化成功实现其目标概率的设备都可以被称作为智能体。通俗地讲,“人工智能”一词用于描述模仿人类与其他人类思维联系的“认知”功能的机器,这些功能包括“学习”和“解决问题”等。
Machine Learning
机器学习(ML)是对算法和统计模型的科学研究。在不使用明确指令的情况下,计算机系统使用它来有效地执行特定任务,这个过程主要依赖于模式和推理。ML被视为人工智能的一个分支。机器学习算法基于样本数据建立数学模型(其中样本数据通常被称为“训练数据”),以便在没有明确编程执行任务的情况下进行预测或决策。机器学习算法用于各种各样的应用,例如自然语言处理和计算机视觉。对于这类问题,开发用于执行任务的特定指令的算法是不可行的。因此,机器学习通常借助某种统计模型进行推断。另一方面,机器学习的目标通常是被形式化为某个优化问题的求解,因此数学优化研究为机器学习领域提供了方法、理论和应用领域。
此外,数据挖掘是机器学习中的一个子研究领域,侧重于通过无监督学习进行探索性数据分析。
Deep Learning
深度学习(也称为深度结构化学习或分层学习),不同传统的机器学习,是基于人工神经网络中层级结构的更广泛的机器学习方法系列的一部分。深度学习直接学习从样本到预测的端对端的映射,因而对整个机器学习领域带来了革命性的改变。深度学习架构,如深度神经网络、深度置信网络、递归神经网络和卷积神经网络,已应用于计算机视觉、语音识别、自然语言处理、音频识别、社交网络过滤、机器翻译、生物信息学、药物设计等领域。在某些领域上,如医学图像分析、材料检查和棋盘游戏程序,深度学习模型产生的结果可与人类专家相媲美,在某些情况下甚至优于人类专家。神经网络最初受到生物系统突触结构中的信息处理和分布式通信节点的启发,但与生物脑的结构和功能特性存在各种差异,这使得它们与神经学证据不相容。具体而言,神经网络往往是静态的和象征性的,而大多数生物体的生物大脑是动态的(可塑性)
Computer Version
计算机视觉是一个跨学科的科学领域,涉及如何使得计算机从数字图像或视频中获得高层次的理解。从工程的角度来看,它寻求以自动化方式完成人类视觉系统可以完成的任务。计算机视觉任务包括用于获取,处理,分析和理解数字图像的方法,以及从现实世界中提取高维数据以便以决策的形式产生数字或符号信息。在这种情况下理解意味着将视觉图像(视网膜的输入)转换为可以与其他思维过程交互并引出适当行动的环境描述。这种图像理解可以看作是利用几何学,物理学,统计学和学习理论构建的模型,旨在从图像数据中解开符号信息。作为一门科学学科,计算机视觉关注从图像中提取信息的人工系统背后的理论。图像数据可以采用多种形式,例如视频序列,来自多个相机的视图或来自医学扫描仪的多维数据。作为一门技术学科,计算机视觉试图将其理论和模型应用于计算机视觉系统的构建。计算机视觉的子领域包括场景重建,人脸识别,目标检测,视频跟踪,物体识别,3D姿态估计、学习、索引,运动估计和图像恢复。
Database
与数据管理相关的所有方面,包括数据存储,数据检索,数据分析和视觉化,如为超大型数据组开发高效算法,为各种新型的应用领域建立大型的数据系统,也有与其他领域进行跨学科的研究,可应用的领域有电脑游戏设计,数据隐私与安全等。
Algorithm
广义上面的算法是指为解决一个问题而采取的方法和步骤,而CS下的算法则是指计算机为了解决某一个问题或者完成某一个任务的一系列清晰的指令。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。现代的算法理论主要的研究目的在于如何开发出更加效率的算法,研究相关的算法的设计方法与实现技术。
Software Engineering
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它的目标是在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统,包括提高软件质量设计新的形式与结构、开发新的科技以降低软件系统的成本、提高软件的正确性与实用性。软件工程的关注点是如何为用户创造价值。在学习内容方面它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
Human Interaction Interaction
人机交互,简称HCI,是一门研究人、计算机以及它们之间的相互影响的学科。人机交互技术是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术。它包括机器通过输出或显示设备给人提供大量有关信息及提示请示等,人通过输入设备给机器输入有关信息,回答问题等。人机交互技术是计算机用户界面设计中的重要内容之一。它与认知学、人机工程学、心理学等学科领域有密切的联系。
Technical Questions
技术面试是最核心部分。下面这些是帮助你通过Technical Questions的建议读物:
Programming Interviews Exposed
入门级书籍,可以了解一些基本概念。
Cracking the Coding Interview
中级书籍,经典必备教材,重点推荐,重中之重!从头到尾我做过五次。
Hacking a Google Interview
MIT的一门课程,教学Handout可作为中级题目练习。
mitbbs的JobHunt板块
资料很多,水帖更多,可以寻找到很多战友和第一手的面经。可以重点学习里面的精华贴。
http://www.sureinterview.com/
中高级的算法题。
http://www.leetcode.com/
高级算法题,难度偏难,可做适当了解。个人认为,如果不是面Google,里面的题目被面到的可能性不高。
Topcoder
知名的编程练习网站,有一些相关的材料和教材很经典。
面经来源:
mitbbs的JobHunt板块,Glassdoor,CareerCup
C++ FAQ
非常有名的高级C++语言学习网站。啃下来会很有帮助。主要的目的是为了应付关于Object-Oriented的相关题目。
如果你准备用Java,也请至少把语言使用能力达到中阶。
Object Oriented Analysis and Design (Oreilly Head First.)和
Design Patterns Oct.2004(Oreilly Head First)
两本OOP的经典教材。据说Design Pattern挺重要,但个人从未遇到过相关题目。但是大致了解一下,总不会错。
Wikipedia/Google
仔细查阅每一个你所不知道的算法、数据结构和概念,做好笔记。等你在面试时发现一个名词你见过却不知道是什么,你会把肠子悔青的。
每个公司所关注的技术是不一样的:
这一点非常重要。比如面试Google的时候,就要把Distributed System和Information Retrieval的相关技术了解下,好好看看他家的经典Paper:Map-Reduce和Google File System;比如面Bloomberg,对C++的了解和使用一定要啃到一定级别;比如面试Amazon,要准备好OOP。
什么是C S专业 ?
领域划分
技术面试
bottom of page