杂思
移动互联网,大数据,云计算,人工智能
5个小时的比赛,挑战的是人类脑力和体力的极限。要应对的是由数据结构、图论、计算几何与数论、算法、机器学习、模式识别等科目混合而成的考题,解答它们需要严密的思维方式和长期训练的思维能力。它还考察你的团队协作能力、以及在强手如云的氛围里能否应对自如的心理素质。
高内聚
低耦合
命令式编程: 顺序,分支,循环
函数式编程
常见的数据结构:
1.字符串
2.可以动态增长的数组 在java中就是arraylist python就是列表 ruby就是数组
3.用来存储key-value这样值对的集合 在java中就是map python就是字典 ruby就是hash
面向对象中的 封装,继承,多态
继承: 在java中就是extends python就是括号 ruby就是"<"
封装:private protected public
多态:很多静态语言的专利, 动态语言用的是 Duck Typing
突破内存:
程序顶多只能在内存中折腾,最多能输出到毫无趣味的控制台上,还无法访问硬盘和网络
不同的语言对硬盘和网络的抽象大相径庭
例如java试图把所有的东西都称为IO 抽象出一套优雅但是不太好用的API
对于XML和JSON的操作是必须要掌握的
什么是进程,什么是线程,为什么要有进程和线程
并发编程会涉及到线程之间的同步和通信,如何加锁,防止死锁,线程池 虽然在实际工作中都封装好了,业务编程中用的少,但是要理解概念
语言特性:
java----反射,泛型,注解
ruby----block,元编程
javascript---原型,闭包,函数
对于网络编程,至少要理解socket(tcp/ip)和http 一个是传输层,一个是应用层
redis:
为什么要有缓存?
缓存和应用程序是在一个进程内还是不同的进程?
缓存在本机还是网络上?
缓存里能放什么东西?
数据是什么格式?
缓存和数据库的一致性怎么保证?
如何实现高性能?
一个redis服务器满了怎么办?
一个redis服务器挂了怎么办?