【学习升级路线1】

四维的惰性

 

我30的时候,连跳两轮,直接翻了一倍,年龄没你想的那么可怕。可怕的是没有信心以及支持信心的底气。// @风一样的爱好者: 本人就是工资倒挂的程序猿,不是不想跳槽,人过30岁,编码岗位并不是那么好找

 

坚持。长期地坚持去做一件事情,真的很难。不过,当你下定决心持续地去做一件事情的时候,你的坚持就会变成一种习惯。习惯一旦养成,你不去做那件事情的时候,反而会觉得心里不舒服,好像少了什么似的因为平时要上班,所以一天下来,其实也没多少时间去研究Android系统。这时候我就告诉自己,更加要坚持,并且给自己算了一笔数:工作日每天看20页书,周末每天看50页书,大概两周就可以看一本400~500页的书;一天看300行左右代码,一周就能看2000~3000行代码;一天写1个段落的博客,一周也能捣鼓出1篇来。另外,当坚持了一段时间之后,就会发现学习的速度比以前更快了,就好像有一种加速度一样,这时候就会发现事情越做越快。

 

自信。自信是很重要的,尤其是在你做一件很有挑战性的事情的时候。如果没有自信,在碰到难以解决的困难时,或许就会放弃了。其实在很多时候,机遇都是偏爱那些有自信并且一直坚持着梦想的人。记得在研究Android系统的UI渲染服务SurfaceFlinger的时候,被一个20多行代码的函数难住了,百思不得其解。后来盯了两三天,联系了各种上下文,最后总算是把它弄明白了。我一直都相信潜意识这种东西:只要你相信你能解决一个问题,并且坚持住不放弃,潜意识就会帮助你去加工和组织各种原始信息。因此,自信很重要,它是一种软实力:有自信不一定能成功,但是没有自信要成功就难上加难。

 

淡定。淡定是一种人生态度,它能使你不功利,不浮躁,从容地面对得与失,找到一条更合适自己长远发展的路。往往梦想都是一个比较长期的东西,不是短期内就能看到效益的。在坚持梦想的过程中,又可能要付出很多代价,例如,你没有时间找(陪)老婆或者女朋友,你赚的钱没有一起毕业的同学多,诸如此类的等等事情。这时候,你就更需要淡定:只要你判断你正在做的事情是值得的,你就淡定地面对别人的眼光和周围的环境。我发现写博客以来,自己变得越来越宅了,下班后和周末都更愿意呆在房间里,当渐渐地发现同学都在忙着晒结婚照或者小孩照的时候,自己还在单身着:(。这可能就是宅的代价吧,不过现在对这件事情还是比较淡定:)。

  

总结来说就是:心怀梦想,带着自信和淡定,持之以恒,学习、学习,再学习!很讽刺的是,如果是五六年以前的自己看到上面的这些文字,我会觉得很扯,很空洞,没意义。人可能就是要非得亲自去经历一些事情,才能深刻地领会一些道理。

 

 

基本功

 

面向对象的特征

final, finally, finalize 的区别

int 和 Integer 有什么区别

重载和重写的区别

抽象类和接口有什么区别

说说反射的用途及实现

说说自定义注解的场景及实现

HTTP 请求的 GET 与 POST 方式的区别

session 与 cookie 区别

http://uule.iteye.com/admin/blogs/2211575

session 分布式处理

http://uule.iteye.com/admin/blogs/2236466

JDBC 流程

MVC 设计思想

equals 与 == 的区别

接口与抽象类的区别?

Java中的异常有哪几类?分别怎么使用?

常用的集合类有哪些?比如List如何排序?

ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?

内存溢出是怎么回事?请举一个例子?

==和equals的区别?

hashCode方法的作用?

NIO是什么?适用于何种场景?

 

NIO模型,select/epoll的区别,多路复用的原理

Java中一个字符占多少个字节,扩展再问int, long, double占多少字节

创建一个类的实例都有哪些办法?

final/finally/finalize的区别?

Session/Cookie的区别?

String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?

Servlet的生命周期?

如何用Java分配一段连续的1G的内存空间?需要注意些什么?

Java有自己的内存回收机制,但为什么还存在内存泄露的问题呢?

什么是java序列化,如何实现java序列化?(写一个实例)?

String s = new String("abc");创建了几个 String Object?

ConcurrentHashMap

Java中实现多态的机制是什么

什么是线程池,如何使用?

数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁

进程和线程的区别

说说你对Java反射的理解

Java如何调用c、c++语言

你所知道的设计模式有哪些

【搜】死锁的四个必要条件

常见编码方式;utf-8编码中的中文占几个字节;int型几个字节

心跳包是怎么设计的

Java什么时候会发生内存泄漏?

Array与ArrayList的区别

如何解决变量可见性?

重载与重写的区别

索引是怎么实现的?

object对象的常用方法

========================================================================

数据结构与算法基础

 

说一下几种常见的排序算法和分别的复杂度。

用Java写一个冒泡排序算法

描述一下链式存储结构。

如何遍历一棵二叉树?

倒排一个LinkedList。

用Java写一个递归遍历目录下面的所有文件。

堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面)

求1000以内的水仙花数以及40亿以内的水仙花数

最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码

万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)

子串包含问题(KMP 算法)写代码实现
用javascript写出斐波那契函数。。。

请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户

一个不规则INT数组,找出连续的最大增序子数组

答海量(大于内存)的字符串读入,怎样得到频率最高的那组字符串

 比如二分查找树,自平衡树(红黑树,AVL树)。在问完这些数据结构的一些基本思想后,就让我手写实现一棵红黑树

问如何找到k个最小的数。

答说了几种算法。

编程题:设有N个人依次围成一圈,从第1个人开始报数,第M个人出列,然后从出列的下一个人开始报数,数到第M个人又出列,...,如此反复到所有的人全部出列为止,设N个人的编号分别为1,2,...,N,打印出出列的顺序,要求用java实现。 

如何在有限内存下对10GB文本数据排序?

复杂链表的深度复制

然后问了一个算法问题,熟人问题,说一下你的思路?你要怎么构造数据集?。。

跳跃数组问题

查找算法

B+树和二叉树查找时间复杂度

KMP算法、hash算法

常用的hash算法有哪些

如何判断一个单链表是否有环?

给你一万个数,如何找出里面所有重复的数?用所有你能想到的方法,时间复杂度和空间复杂度分别是多少?

给你一个数组,如何里面找到和为K的两个数?

100000个数找出最小或最大的10个?

一堆数字里面继续去重,要怎么处理?

广度优先遍历二叉树

各类排序算法、红黑树

【既然有哈希,为什么要用树】

https://blog.csdn.net/maybe3is3u5/article/details/52426401

https://blog.csdn.net/wei_wenbo/article/details/50820300

用数组实现一个阻塞队列 

http://uule.iteye.com/admin/blogs/2419419

3分钟之内写出来链表逆序的递归算法

http://uule.iteye.com/admin/blogs/2141656

========================================================================

集合

List 和 Set 区别

List 和 Map 区别

Arraylist 与 LinkedList 区别

ArrayList 与 Vector 区别

HashMap 和 Hashtable 的区别

HashSet 和 HashMap 区别

HashMap 和 ConcurrentHashMap 的区别

ConcurrentHashMap 的工作原理及代码实现

 HashMap与ConcurrentHashMap的区别及底层实现原理;2.多线程的实现方式以及比较优劣;3.乐观锁与悲观锁的区别以及使用场景

集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;

 

hashset是如何通过hashmap来实现的?

HashSet 内部使用 HashMap 。HashSet 把存储的值作为 key, new Object()作为Value)

http://www.importnew.com/19208.html

HashMap实现原理,如何保证HashMap的线程安全?

HashMap 的工作原理及代码实现

HashMap默认加载因子为什么选择0.75?

HashMap什么情况下发生死链?

HashMap的不当使用是否会导致cpu100%?为什么? 

http://uule.iteye.com/admin/blogs/1122340

========================================================================

JVM

JVM内存结构

http://uule.iteye.com/admin/blogs/2419969

JVM堆的基本结构。

http://uule.iteye.com/admin/blogs/1894724

JVM如何给对象分配内存?

http://uule.iteye.com/admin/blogs/2421863

JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?

http://uule.iteye.com/admin/blogs/2422000

JVM有哪些常用启动参数可以调整,描述几个?

https://blog.csdn.net/mrzhoug/article/details/51148302

-Xms512m/-Xmx512m/NewSize/newRatio/SurvivorRatio/MaxPermSize/UseSerialGC/UseConcMarkSweepGC....

如何查看JVM的内存使用情况?

Java程序是否会内存溢出,内存泄露情况发生?举几个例子。

你常用的JVM配置和调优参数都有哪些?分别什么作用?

常用的GC策略,为什么需要GC?什么时候会触发YGC,什么时候触发FGC?

如何死循环跟踪揭秘jvm

jvm相关问题,运行时内存分布、gc策略、gc算法、类加载的过程

哪些情况下会出现CPU100%?如果出现了你怎么去定位(常用的工具和步骤以及如何分析)?

 

========================================================================

多线程

 

创建线程的方式及实现

sleep() 、join()、yield()有什么区别

说说 CountDownLatch 原理

说说 CyclicBarrier 原理

说说 Semaphore 原理

说说 Exchanger 原理

说说 CountDownLatch 与 CyclicBarrier 区别

ThreadLocal 原理分析

讲讲线程池的实现原理

线程池的几种方式

newCachedThreadPool / newFixedThreadPool / newScheduledThreadPool/ newSingleThreadExecutor

线程的生命周期

如何创建线程?如何保证线程安全?

如何实现一个线程安全的数据结构

如何避免死锁

Volatile关键字的作用?

什么是死锁?如何避免

ConcurrentHashMap的实现原理是?

HashMap在多线程环境下使用需要注意什么?为什么?

什么是守护线程?有什么用?

Java程序中启动一个线程是用run()还是start()?

线程和进程的差别是什么?

Java里面的Threadlocal是怎样实现的?

sleep和wait区别

notify和notifyAll区别

volatile关键字的作

ThreadLocal的作用与实现

两个线程如何串行执行

线程池ThreadPoolExecutor的实现原理?

多线程如何在多个CPU上分布?线程调度算法有哪些?.线程调度和进程调度的区别?

如何构建一个高并发的服务器。我提到可以用epoll以及多线程。面试官接着问为什么要用多线程,而不是单线程。

多线程和多进程的区别。

答线程是可执行代码的可分派单元。这个名称来源于“执行的线索”的概念。在基于线程的多任务的环境中,所有进程有至少一个线程,但是它们可以具有多个任务。这意味着单个程序可以并发执行两个或者多个任务。多线程开销较小。

简单实现一个线程池?扩展:带定时任务的线程池如何实现? 

可以运行时kill掉一个线程吗?

上下文切换是什么含义

什么是条件锁、读写锁、自旋锁、可重入锁?

 

========================================================================

锁机制

 

说说线程安全问题

volatile 实现原理

http://uule.iteye.com/blog/1521180

http://uule.iteye.com/admin/blogs/2419969

synchronize 实现原理

synchronized 与 lock 的区别

CAS 乐观锁

ABA 问题

乐观锁的业务场景及实现方式

分段锁的机制

========================================================================

框架使用

Spring

BeanFactory 和 ApplicationContext 有什么区别

Spring Bean 的生命周期

Spring IOC 如何实现

说说 Spring AOP

Spring AOP 实现原理

动态代理(cglib 与 JDK)

Spring 事务实现方式

Spring 事务底层原理

如何自定义注解实现功能

Spring MVC 运行流程

Spring MVC 启动流程

Spring 的单例实现原理

Spring 框架中用到了哪些设计模式

Spring 其他产品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)

 

描述一下Hibernate的三个状态?

Spring中Bean的生命周期。

SpringMVC或Struts处理请求的流程。

Spring AOP解决了什么问题?怎么实现的?

Spring事务的传播属性是怎么回事?它会影响什么?

Spring中BeanFactory和FactoryBean有什么区别?

Spring框架中IOC的原理是什么?

spring的依赖注入有哪几种方式

struts工作流程

用Spring如何实现一个切面?

Spring 如何实现数据库事务?

Hibernate对一二级缓存的使用,Lazy-Load的理解;

mybatis如何实现批量提交?

 Spring的核心点及其实现方式;5.Hibernate的一级缓存与二级缓存

 

你知道的spring组件有哪些?在你的工作中哪些地方用到了这些组件?为什么要用这个组件?需要注意哪些点?"针对具体的组件问具体的问题. 因为你能说出来的组件才是你确实用过的,既然是你用过的组件,那我问你在哪些地方用,你就必须知道,并且用这个组件需要注意的点你也应该知道.否则要么就是你没真正用过, 要么就是你确实用了,但是你没有真正理解这个组件,而只是会机械的用而已.

========================================================================

数据库相关

MySQL InnoDB、Mysaim的特点?

http://uule.iteye.com/admin/blogs/2420424

乐观锁和悲观锁的区别?行锁,表锁;乐观锁,悲观锁

http://uule.iteye.com/admin/blogs/2420176

数据库隔离级别是什么?有什么作用?数据库事务的几种粒度;

http://uule.iteye.com/admin/blogs/1445678

MySQL主备同步的基本原理。

select * from table t where size > 10 group by size order by size的sql语句执行顺序?

如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘SSD、业务优化、主从部署)

如何从一张表中查出name字段不包含“XYZ”的所有行?

如何解决高并发减库存问题

mysql存储引擎中索引的实现机制;

说说反模式设计

说说分库与分表设计

分库与分表带来的分布式困境与应对之策

说说 SQL 优化之道

MySQL 遇到的死锁问题

http://uule.iteye.com/admin/blogs/2422193

limit 20000 加载很慢怎么解决

http://uule.iteye.com/admin/blogs/2422189

选择合适的数据存储方案

ObjectId 规则

聊聊 MongoDB 使用场景

聊聊 ElasticSearch 使用场景

如何防止 SQL注入?如何防止用户删除其他用户的信息?表单提交可以跨域么?自己写的接口如何防止被其他人恶意调用?

三大范式

数据库连接池的原理

如何实现不同数据库的数据查询分页

SQL注入的原理,如何预防

 

数据库索引的优缺点以及什么时候数据库索引失效 

数据库索引的实现(B+树介绍、和B树、R树区别)

SQL什么情况下不会使用索引(不包含,不等于,函数)

一般在什么字段上建索引(过滤数据最多的字段)

B+索引实现

MySQL,B+索引实现,行锁实现,SQL优化

mysql索引是怎么实现的

数据库索引的原理

聚集索引与非聚集索引的区别

倒排索引

MySQL 索引使用的注意事项

为什么要用 B-tree

========================================================================

缓存使用

 

Redis 有哪些类型 内部结构

http://uule.iteye.com/admin/blogs/2420503

聊聊 Redis 使用场景

Redis 持久化机制

Redis 如何实现持久化

http://uule.iteye.com/admin/blogs/2144221

 

Redis,RDB和AOF,如何做高可用、集群

Redis 集群方案与实现

Redis 为什么是单线程的

缓存奔溃

缓存降级

使用缓存的合理性问题

Redis等缓存系统/中间件SQL/一致性Hash等

列举一个常用的Redis客户端的并发模型。

HBase如何实现模糊查询?

列举一个常用的消息中间件,如果消息要保序如何实现?

如何实现一个Hashtable?你的设计如何考虑Hash冲突?如何优化?

分布式缓存,一致性hash

LRU算法,slab分配,如何减少内存碎片

如何解决缓存单机热点问题

什么是布隆过滤器,其实现原理是? False positive指的是?

memcache与redis的区别

zookeeper有什么功能,选举算法如何进行

map/reduce过程,如何用map/reduce实现两个数据源的联合统计

 redis的配置文件(AOF&&Snapshot&&主从复制)

========================================================================

分布式

 

谈谈业务 中使用分布式的场景

session 分布式处理

http://uule.iteye.com/admin/blogs/2236466

分布式锁的场景

分布是锁的实现方案

http://uule.iteye.com/admin/blogs/2420444

分布式事务

选择合适的分布式主键方案

http://uule.iteye.com/admin/blogs/2420466

集群与负载均衡的算法与实现

说说分库与分表设计

分库与分表带来的分布式困境与应对之策

 

========================================================================

设计模式与重构

你能举例几个常见的设计模式

你在设计一个工厂的包的时候会遵循哪些原则?

你能列举一个使用了Visitor/Decorator模式的开源项目/库吗?

你在编码时最常用的设计模式有哪些?在什么场景下用?

如何实现一个单例?

代理模式(动态代理)

单例模式(懒汉模式,恶汉模式,并发初始化如何解决,volatile与lock的使用)

MVC MVP MVVM; 常见的设计模式;写出观察者模式的代码

 

========================================================================

Linux使用与问题分析排查

使用两种命令创建一个文件?

硬链接和软链接的区别?

Linux常用命令有哪些?

在LINUX里,如何查看一个监听端口为8060的进程?

怎么看一个Java线程的资源耗用?

Load过高的可能性有哪些?

/etc/hosts文件什么做用?

如何快速的将一个文本中所有“abc”替换为“xyz”?

如何在log文件中搜索找出error的日志?

发现磁盘空间不够,如何快速找出占用空间最大的文件?

Java服务端问题排查(OOM,CPU高,Load高,类冲突)

Java常用问题排查工具及用法(top, iostat, vmstat, sar, tcpdump, jvisualvm, jmap, jconsole)

Thread dump文件如何分析(Runnable,锁,代码栈,操作系统线程ID关联)

如何查看Java应用的线程信息?

 

 

========================================================================

消息队列

 

消息队列的使用场 景

消息的重发补偿解决思路

消息的幂等性解决思路

消息的堆积解决思路

自己如何实现消息队列

如何保证消息的有序性

消息队列具体怎么实现,请求太多怎么办。后者我回答了个负载均衡,这个回答其实没有抓到面试官的点,不过面试官就顺着这个问题问了负载均衡的实现,请求怎么调度,有无状态问题。到最后面试官简单总结了一下,负载均衡的调度的话可以通过将数据存储抽象实现无状态。

面试官还对之前问的消息队列请求过多的问题总结了一下,说是通过在请求中记录超时时间戳。另外,前边的syn防御也是通过缩短半链接的超时来解决。感觉面试官给的这些答案都非常的偏实际工程应用。

========================================================================

网络协议和网络编程

 

TCP建立连接的过程。

TCP断开连接的过程。

tcp的三次链接,顺着三次连接又问到了syn攻击,以及防御方法

TCP协议怎么保证可靠传输?原理TCP和UDP的区别数组和链...

TCP的3次握手和四次挥手;TCP与UDP的区别

什么是TCP 粘包/拆包

TCP粘包/拆包的解决办法

HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构 

浏览器发生302跳转背后的逻辑?

HTTP协议的交互流程。HTTP和HTTPS的差异,SSL的交互流程?

Rest和Http什么关系? 大家都说Rest很轻量,你对Rest风格如何理解?

TCP的滑动窗口协议有什么用?讲讲原理。

HTTP协议都有哪些方法?

交换机和路由器的区别?

Socket交互的基本流程?

http协议(报文结构,断点续传,多线程下载,什么是长连接)

tcp协议(建连过程,慢启动,滑动窗口,七层模型)

webservice协议(wsdl/soap格式,与rest协议的区别)

NIO的好处,Netty线程模型,什么是零拷贝

HTTP协议都有哪些内容?程序如何parse的?

JDK源码里面都有些什么让你印象深刻的设计模式使用 

 

 

========================================================================

Netty

 

为什么选择 Netty

说说业务中,Netty 的使用场景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

Netty 线程模型

说说 Netty 的零拷贝

Netty 内部执行流程

Netty 重连实现

猜你喜欢

转载自uule.iteye.com/blog/2420230
今日推荐