待看计划
时间:2017-7-16 ~ 2017-8-30
1 网络:
TCP/IP
HTTP
SOCKET(JAVA/Linux C)
SELECT EPOLL
2 数据结构和算法:
2.1 反复横跳练习
排序:
快排
2017-6-12
堆排序
2017-6-12
归并排序
2017-6-13
直接插入
2017-6-14
查找:
二分查找
2017-6-13
散列表
二叉树遍历
2.2 原理(基本思想、复杂度、优缺点、场景)
重点排序:快排、堆排序、归并排序
重点查找:二分查找、散列表、树(二叉树、B树、B+树、B*树、红黑树)
2.3 刷题
编程之法
leetcode
3 JAVA:
类、接口、数据类型
线程(池)
文件IO
网络IO
NIO
日期库、数学库、
SET、LIST、MAP
4 JVM:
内存模型
收集算法
收集器
5 设计模式:
工厂模式
代理模式
观察者模式
单例模式
装饰者模式
6 JAVA后台框架:
Servlet
Spring
MyBatis
7 大数据框架:
Hadoop(MapReduce、Hive、HDFS、YARN)
Spark
8 操作系统:
8.1 Linux内核
进程调度
文件系统(VFS)
内存管理
8.2 Linux Shell
常用命令
文本处理 grep、awk、sed
8.3 Linux运维
启动过程
防火墙 iptables、Firewall
9 数据库:
SQL语言
MySQL引擎
Hive
Redis
自主问题
对于自主性要求较高的问题,应对准备。
- 说说你对网络的了解
说TCP、HTTP、SOCKET之间的关系
TCP的建立和断开
TCP要重点描述
SOCKET包含TCP、UDP
HTTP可以讲
- 说说你对JAVA最熟悉的方面
常用库:
线程池、线程同步(还得再学一些)
List、Map、Set
定时器(之前遇到的定时不准的问题)
(还要再考虑,再完善)
- 说说你对JVM的了解
1 先说JVM的内存模型
堆、方法区、虚拟机栈、本地方法栈、程序计数器及作用
2 介绍什么是GC
判断一个对象可回收的方法:计数法和可达性分析法
JAVA GC主要在堆里,堆分为新生代和老年代。介绍新生代,介绍老年代。
3 介绍GC算法
新生代的GC算法,老年代的GC算法。
新生代GC时什么时候把对象移到老年代。
什么时候发生full GC
4 介绍常用收集器及对比
串行、并行、CMS、G1
- 你了解哪些设计模式
之前的安卓中用到的设计模式可以说一说,代理模式、观察者模式、单例模式
工厂模式重点说一说
装饰者模式可以说一说
JAVA
class JvmEqualsTest {
public static void main(String[] args) {
String s3 = "s";
String s4 = "s";
System.out.println(s3==s4);
Integer i = 2017;
Integer j = 2017;
System.out.println(i==j);
String s1 = new String("s");
String s2 = new String("s");
System.out.println(s1.intern()==s2.intern());
}
}
true
false
true
发现JAVA中的String是不可修改的,每次更改后都是赋予新的对象
Java基础查漏补缺:String为什么不可修改
http://blog.csdn.net/u011240877/article/details/47256579
Java 7、8中的String.intern(3)
http://www.importnew.com/12681.html
吹项目
吹Android项目
吹清华项目
练习基础10大排序
hashmap hashtable concurrenthashmap实现
JAVA 内存管理
JAVA GC
JAVA的数据类型,各占多少字节
JAVA多态等概念
什么是 非阻塞IO IO复用
JVM虚拟机
JAVA GC的触发时间
http://icyfenix.iteye.com/blog/715301
CAS
SQL
Linux中进程和线程的资源独立情况
Linux中文件系统
Android在主线程操作UI是否属于事件派发线程
类似
Android中AsyncTask不能主动结束任务,如何解决
Aspectj:一种基于Java平台的面向切面编程(AOP)的语言
Service START_STICKY 生命周期 复习
JAVA中有哪些锁
Android 中 mvp+dagger2+rxjava+retrofit的框架
Lrucache android提供的一个缓存工具类
JVM需要使用垃圾收集器是因为JAVA采用自动回收垃圾的机制,从系统中分配的内存空间,需要在内存不足时回收不用的对象空间。这里产生的碎片问题,是内部碎片,而操作系统中的碎片问题,是外部碎片,是在分页机制外的的物理内存。
总共有多少种设计模式
23
问题-杂
问:一个内网的IP数据报发送给一个公网服务器,经过路由之后,数据包里的源IP和目标IP都没变,只变了源、目标MAC地址,那服务器是怎么知道这个数据包的客户端公网IP的。
答:内网的包经过路由之后,会进行NAT(网络地址转换),IP会被更改。
待看 阿里的JAVA编程规范
偏向锁 轻量级锁 重量级锁
sed不支持非贪婪匹配,所以只能匹配非>,而grep可以
➜ tmp sed 's/<.*?>//g' sed_html.txt
<b>This</b> is what <span style="text-decoration: underline;">I</span> meant. Understand?
➜ tmp grep -E '<.*?>' sed_html.txt
<b>This</b> is what <span style="text-decoration: underline;">I</span> meant. Understand?
- Linux内核的启动过程
- 什么是内存屏障
内存屏障:一旦内存数据被推送到缓存,就会有消息协议来确保所有的缓存会对所有的共享数据同步并保持一致。这个使内存数据对CPU核可见的技术被称为内存屏障或内存栅栏。
内存屏障提供了两个功能。首先,它们通过确保从另一个CPU来看屏障的两边的所有指令都是正确的程序顺序,而保持程序顺序的外部可见性;其次它们可以实现内存数据可见性,确保内存数据会同步到CPU缓存子系统。
Linux内核中的内存屏障(1)
http://blog.csdn.net/cheng_fangang/article/details/41849067
为了提升性能,CPU会乱序执行指令。内存屏障可以确保指令按照正确的顺序执行。
写屏障(write barriers)
- 定义: 在写屏障之前的所有写操作指令都会在写屏障之后的所有写操作指令更早发生。
读屏障(write barriers)
- 定义: 在读屏障之前的所有读操作指令都会在读屏障之后的所有读操作指令更早发生。另外,它还包含后文描述的数据依赖屏障的功能。
通用屏障(general barriers)
- 定义: 在通用屏障之前的所有写和读操作指令都会在通用屏障之后的所有写和读操作指令更早发生。
- 写几个正则 IP 邮箱
常用正则表达式—邮箱(Email)
http://blog.csdn.net/make164492212/article/details/51656638
➜ tmp cat email
➜ tmp cat email|ggrep --color=auto -E '[a-zA-Z0-9\_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+'
➜ tmp cat ip
192.168.1.1
0.0.0.0
256.1.1.1
1.1.1
400.1.1.1
1000.1.1.1
➜ tmp cat ip | ggrep --color=auto -P '((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|\d{2}|1\d\d|2[0-4]\d|25[0-5])'
192.168.1.1
0.0.0.0
256.1.1.1
400.1.1.1
1000.1.1.1