技术栈

Android

1.四大组件 Activity,service,Broadcast Receiver,ContentProvider
2.view 分发
3.binder
http://wangkuiwu.github.io/2014/09/01/Binder-Introduce/
4.app启动
https://juejin.im/entry/586105ff61ff4b006308096a
5.handler
6.插件化
7.view绘制
8.jni
9.bitmap
10.编码架构模式
Android Architecture Blueprints
MVP 解读

11.Android 测试
http://www.jianshu.com/p/cf446be43ae8

Java

1.HashMap实现

HashMap是HashTable map接口的非同步实现,由一个数组构成,而数组中保存链表头结点。

2.wait和sleep区别

a.wait释放锁,进入等待池,只能通过notify唤醒,sleep不释放锁 b.Sleep是Tread类的静态方法可以在代码任意位置使用,Wait是Object类的方法,只能在同步方法或同步代码块中使用。

3.多线程 除了加锁 其它同步方式?

a.Threadloacl用于线程间数据隔离。b.CopyOnWrite策略,可任意读,写的时候会Copy一份内存供其修改。c.Synchronized基于JVM的实现,Lock基于纯Java代码的实现,Atomic是基于cpu指令的实现。

4.DataoutputStream BufferedoutputStream区别

DataOutputStream是基于基本数据结构的输出字节流,可以使用writeInt来输出数据。BufferedOutStream是基于缓冲的输出字节流。OutPutStream是输出字节流的基类。

5.设计模式分类

行为模式、创建模式、结构模式。

  1. list和set区别。set是什么,

List是线性数据结构,set是集合数据结构。

  1. Java7新特性

语法:switch支持字符串、数字下划线、二进制表示。垃圾回收增加G1垃圾回收器。
分代垃圾回收
8.堆内存内容

Java堆中存储数组和对象。
9.方法执行顺序

10.Synchronized
11.强引用,软引用,弱引用,虚引用

Web

1.request.getDispather().forward()和response.redirect()区别

forward是服务器内部请求转发,会把request的内容同时转发,Redirect是服务器向客户端发送一个状态码和content-disposition告诉客户端跳转到具体界面

2.request 内容

accept、accept-encoding、accept-charset、accept-language、host、referer、connection、data、if-modify-since、User-agent、cookie

3.request 范围

request请求范围是一个或多个经过request转发的页面。

4.Spring事物配置

spring事件分为数据源、事物管理器和代理,不同底层有不同的数据源和事物管理器,如Hibernate数据源是SessionFactory,事物管理器是HibernateTractionManager,代理有5种配置方法,分别为逐个Bean代理,Bean工厂代理、拦截器、tx标签拦截和注解配置。

5.配置spring流程

6.struts2实现原理

7.IOC实现原理

IOC是控制反转,利用工厂模式把对象的管理交给Spring容器来管理,只需要在配置文件中配置相关的Bean和属性设置,让Spring来生成类的实例和管理,当Spring容器启动的时候,或是调用getBean的时候,Spring会把已经生成的Bean交给需要调用的类。

8.AOP实现原理

Aop是面向切面编程,将程序中的交叉业务逻辑,比如安全、日至、事务,封闭成一个切面,然后注入到目标对象中去。实现AOP主要分为两大类:一是动态代理技术,利用截取消息的方式,对消息进行装饰,来取代原有对象行为的执行。二是静态织入,引用语法创建"方面"。

数据结构

1.从N个数中找到最大的K个数

冒泡和选择排序效率是O(K*N),基本的快排和堆排是O(NlogN),这时候K和LogN比一下可以作选择。我看网上更好的方法是针对K个数的快排,没有必要全部有序,所以分区的时候单向找到K个数就行了,时间复杂度是NlogK。其实现在想一想,如果直接扫一遍,把K的数组做成堆排序,每次更新堆就行了,复杂度也是NlogK,而且适合数据量比较大的情况。如果这一堆数范围不大而且都是正整数也可以用基数排序,这样就更快了。

2.KMP

KMP算法是对简单匹配的改进,通过求出Next[j]函数来减少每次匹配失败的后退距离,Next[j]是子串前缀和后缀相同数量的总和。

3.快速排序适合范围

快排适合大部分排序,但是不适合巨大数量级的,而且当数据相对有序的时候,也不适合用快排。

4.字符串索引

如果字符串长度比较大,可以建立前缀索引。也可以建立Hash索引,增加一个crc_32字段。

5.跳表

是一个链表结构,跳表由很多层构成,每一层都是有序链表,最底层包含所有元素,如果有i层有,i以下的层都会有。在第i层中,如果比i中数值大并小于下一个数值,就跳到下一层。

6.O(n)时间复杂度的排序

计数排序

7.排序总结

8.二叉树

操作系统

1.操作系统内容

操作系统概述、进程、线程、调度、死锁、IO、并发、内存、虚拟内存

2.产生死锁的原因

进程间推进顺序不当和竞争系统资源。竞争系统资源又分为竞争不可剥夺资源和竞争临时性资源。

3.Linux下查看内存使用情况?cpu

top、pmstat、vmstat、jvisualvm. ps、/proc/cpuinfo、top

4.存储器除了硬盘还有什么?高速缓冲存储器了解多少?

寄存器>高速缓存器>内存>硬盘=>光盘=>U盘=>软盘=>磁带 高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。 数据库1.索引?缺点?

索引是对数据库表中一列或多列的值进行排序的一种结构,。索引的缺点是需要占用多余的内存空间,插入修改数据的时候索引也要改变。

2.数据库左连接。查找a表中有的b中没有的

select name from A where name not in(select name from B);
select A.name from A left join B on A.name=B.name where B.name=null

网络

1.tcp和udp区别 udp为什么不安全,例子?

tcp和UDP都是传输层的协议,TCP是可靠的传输,通过三次握手。UDP是用户数据报协议,无连接的传输。如视频,音乐等实时的传输。

2.get post 区别
3.五层协议
4.http 状态码
5.https

6.http握手

RN

[原理](http://zjutkz.net/2016/05/03/%E5%85%B6%E5%AE%9E%E6%B2%A1%E9%82%A3%E4%B9%88%E5%A4%8D%E6%9D%82%EF%BC%81%E6%8E%A2%E7%A9%B6react-native%E9%80%9A%E4%BF%A1%E6%9C%BA%E5%88%B6/)

数据库

a表有b表也有,a表有b表没有
select * from A where (select count(1) from B where A.name=B.name) =1;
select * from A left join B On A.name = B.name where B.name is not null;

思想

  1. FRP
    An Introduction to Functional Reactive Programming

张鹏宇

继续阅读此作者的更多文章