待看、整理

待看计划

时间: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

bboxhe@qq.com

8932xxx@163.com

abcde@sina.com.cn

abcde@sina..cn

a_888-b@cc.net

➜  tmp cat email|ggrep --color=auto -E '[a-zA-Z0-9\_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+'

bboxhe@qq.com

8932xxx@163.com

abcde@sina.com.cn

a_888-b@cc.net

➜  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

发表评论

邮箱地址不会被公开。 必填项已用*标注