说一说CS小本找工作的肤浅经验----ustc

下面浅谈一些自己这个CS小本找工作的肤浅经验,主要是给08、09的后辈们一些参考

主要包括数据结构、算法、C语言、C++的OOP思想等几个方面。

1.数据结构

(1)数组
关于数组的题目特别的灵活,比如无序数组中找出最大的2个/K个、整数数组中找最大
连续和等等。《编程珠玑》中有一些很好的讨论,可以读读。

(2)链表
链表的各种问题,比如判断是否有环并确定环入口、判断两个链表是否相交并判断相交
点等等。在很多链表问题中,快慢针思想很有用。单链表是根本,但也要熟练运用双向
链表、循环链表。

(3)树
关于树,二叉树必须掌握,另外也要了解K叉树、红黑树、B-、B+树的一些基本概念。

(4)图
图的深度和广度优先算法思想和应用场景,要比较熟悉。并且要能熟练应用,比如找迷
宫路线等。

(5)字符串
最好熟悉C标准库中string的常用函数实现,难一些的可能就算KMP了。

(6)有序堆
大/小根堆的调整、保序操作要熟悉。另外算法部分也要用到,比如堆排序。

(7)栈和队列
基本思想,还有一些简单的灵活应用,比如用两个栈模拟一个队列等。

(8)其他
可以实现一些查找从属关系操作的并查集结构,另外某些技术的实现利用了什么数据结
构也可以有适当的了解,比如STL的set是用红黑树实现的,等等。

2.算法

要熟练掌握基本算法和思想,至于熟练的程度,应该是大部分算法题可以在几分钟内给
出解法,而刷过大量ACM题的话,应该算是出色的interviewee了。

各种经典算法思想要熟练掌握。比如,对于贪心要知道如何证明假设,对于动态规划要
会快速找出最优子结构和递归的公式。

(1)排序
各大排序算法都是必会的,对于选择、冒泡、希尔、归并、堆、快速、桶、基数、计数
等排序算法,不仅要会写,还要能将其中的思想提炼出来运用。这在面试中是经常被问
到的。

(2)查找
查找也是很重要的,因为应用很广,比如信息检索、搜索引擎都是大量数据的查找。但
对于小本,不会问你这些业内技术的问题,而会看你对哈希思想和设计、二分查找和条
件的理解和灵活运用。

(3)动态规划
有动态规划思想,会观察最优字结构和得到递归公式。

(4)贪心
对于贪心,最重要的,不是算法的实现,而是算法的假设的证明。面试时,一般都会要
求数学证明。绝大部分可以用归纳法解决,但有的其中可能会用到代数/几何等知识。

(5)二进制思想
二进制思想在某些应用中非常有用,比如可以利用二进制提供线性无关本质的方法,具
体地说包括位图、某些称量问题、0-1背包,都是二进制思想的本质。

(6)海量数据的相关问题的算法思想
可以看看《编程之美》等书,里面某些专题有一些不同方面的讨论。

(7)其他
关于算法的内容,很多很多。还有一些不太具有代表性,但是也要知道。

3.C语言

或某面向过程的经典语言,如Pascal。但其实C既然大一学过,如果没有熟练掌握实在
有些过不去。注意,不一定要“精通”,但要“熟练”。

(1)关于指针
有一些看上去很拗口的内容,比如指针数组、数组指针、函数指针、指针的指针等,还
有与const有关的一些概念,比如指向常量的指针变量、指向变量的指针常量、指向常量
的指针常量等等。还有一些与传参、返回值有关的内容。

(2)关于内存
C语言的程序内存分配情况,这其实与很多方面都有关联,比如堆、栈、编译等等。

(3)关于预处理
比如条件编译、宏定义等,有很多可说的点。


(4)其他
C语言一般用的念头都比较久,如果写的代码多,基本各个点都在平时涉及到了。但精华
部分可能还是要去读一些书才知道。

4.C++的面向对象编程思想(OOP)

(1)关键字
对static、const、virtual、public、private、protected、friend等关键字的各种用
途的理解。

(2)多态
多态是OOP的精髓之一,这涉及到继承/派生、虚函数、虚继承/多重继承等等很多细节。

(3)类的基础知识
构造函数、析构函数、拷贝构造函数、赋值函数等相关要点,说起来也很多。

(4)C++中一些区别于C的特性
这也很泛,比如C++中static、const的作用就比C丰富。另外OOP本身就已经是一场革命

内联的思想vs宏定义,const变量vs宏定义,动态存储管理,重载,动态绑定/静态绑定

c++中的struct和class什么关系,struct可不可以被继承,等等。

(5)其他
运算符重载、覆盖/重载/隐藏的区别、STL、函数模板/类模板/泛型编程,等等。

5.操作系统/网络/数据库/组成原理


这个根据公司不同,会有不同的要求,不过基本上,只要掌握基本知识就OK了。不过如
果真不擅长的话,只要上面四方面比较扎实也OK。

6.网络编程/并行编程/系统编程等


这是一些具体的编程技术,对于小本,不会没有关系,会的话算是bonus。

7.Linux


不会没有影响,这个如果会的话,也是bonus。第一层面是熟悉一些命令、VIM/emacs等
编辑器的基本使用、gcc/g++的基本使用;第二层面就是bash和linux编程;第三层面就
是读内核了。作为校本,到第一层就OK了。如果在实验室和师兄师姐们研究过内核,就
会让面试官的眼睛放光。

8.脚本语言

比如python、perl等,也是bonus。

9.外语

(1)英语


最好考过TOEFL,科大同学的读写能力都可以,口语和听力最好可以胜任基本交流,会
自我介绍、项目介绍和讨论、思想/个性/性格/爱好等方面的讨论和交流。

(2)第二外语


对某个小语种有一些初步掌握也是有一些好处的,比如日语、法语、德语、西语、韩语
等,一是体现自己的文化多元性,二是侧面展现自己的丰富。

10.智力题


并没有通法,想到多少就和Interviewer交流多少,让他/她知道你的思维走到哪里了

不要不说话就好。

11.言谈
踏实、诚恳、自信、自然。对于Interviewee,面试的最高境界是:谈判。不卑不亢,
双向交流,有问有答,有礼有节。要表现出自己良好的表达、倾听、解释和交流的能
力。而面对面试官的挑衅,在证明自己能力OK的基础上主动巧妙还击,因为并不是所
有面试官都懂得尊重你和科大。

12.the key to prefer a certain position

有的人看中base,有的人看中package,有的人看中option/stock,有的人看中晋升空
间,有的人看中户口,有的人看中低工作强度,有的人看中工作环境,有的人看中公司
文化,有的人看中细分的行业领域前景……

因人而异,选择你自己认为对的。

13.参考书籍
(1)数据结构:严蔚敏老师的《数据结构》就可以了。
(2)算法:CLRS的《Introduction to Algorithms》、《编程珠玑》、《编程之美》。
大二的同学时间充
裕的话可以看看《计算机程序设计艺术》。
(3)C:《Expert C Programming》,这本不厚,可以读一读。
(4)C++:入门就读《C++ Primer》或《The C++ Programming Language》,但是这
个是大部头,一般人读不下去,可以先读读也是Lippman写的《Essential C++》,然
后读读《Effective C++》,这两本都不厚。
14.epilog

以上属个人拙见,请各位去糟取精。如若有误,望各位指正,我会及时修改,减少误
导。若以为无可取之处,只当无视就好。最后希望科大越来越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值