跳槽宝典——大神的经验

一、应聘准备:
1)并发、JVM、分布式、TCP/IP协议
2)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap、LinkedHashMap这一类的。
3)CyclicBarrier
4)IO包和NIO包:其实NIO的核心是IO线程池,IO包的设计模式(装饰器模式)
5)GC、类加载机制,以及内存
6)著名开源项目的源码,你自己有很棒的开源项目。
7)个人博客


二、学习历程:
1)Java基础:http://www.runoob.com/java/java-tutorial.html
2)Web开发:HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识:马士兵老师视频
3)开发框架
a)SSM框架,即spring、springmvc、mybatis,视频教程(http://edu.51cto.com/lesson/id-76468.html)
b)Maven

c)开发工具:IntelliJ IDEA、Eclipse


三、必读宝典:
工作1年以内:《Java编程思想》
工作1年到2年:《大话设计模式》、《重构 改善既有代码的设计》、《effective java》、http://www.cnblogs.com/zuoxiaolong/p/pattern26.html
工作2年到3年:《深入理解Java虚拟机》、http://www.cnblogs.com/zuoxiaolong/category/508918.html、《Java并发编程实战》、深入了解Java底层和Java类库
工作3年到4年:大数据(Hadoop、hbase)、分布式缓存(redis)、分布式消息服务、分布式计算(Mapreduce或者storm)、软负载均衡等等


四、高级开发:
《深入理解计算机系统》:比较适合一直从事Java Web开发和APP后端开发工作的人群。
《tcp/ip详解 卷一、二、三》:比较适合做网络编程的人群,比如你使用netty去开发的话,那么就要对TCP/IP有更深入的了解。
《数据结构与算法》:比较适合做计算研究工作的人,比如刚才提到的分布式计算


五、目标:
工作4年到5年:有自己的github开源项目、有自己的产品、提高自己的影响力、参与一个伟大的项目


六:互联网公司面试技术:
阿里巴巴:高并发,缓存,JVM这些方面,比如memcached,redis这类缓存组件,memcached的内存模型是slab,item等类去描述的
百度:一些项目管理,敏捷开发方面的问题
京东:集合框架,算法、并发,JVM,缓存这类内容
网易:memcached,集群,session共享,tcp协议,gc策略,jvm内存模型,并发
艺龙:集合框架,算法、并发,JVM,缓存这类内容


七:跳槽经验:
1,如果可能,不要轻易更换自己的行业。
2,给自己定价一定要谨慎,否则可能错过很好的机会。
3,如果你喜欢技术,公司的技术氛围很重要。
4、跳槽的时候,最好先不要投你的意向公司,而是应该先找几个练手的公司探探身价,然后再客观的给自己定价。一旦定好价之后,就不能再轻易的改变了


八、面试编程:
题目内容是,写一个函数,它的作用是接受一个整数(假设为length),返回一个数组,数组的长度为length,数组中的内容为随机的0至(length-1)的值,并且不能重复。比如length为5的话,数组可能是[1,0,3,2,4]。
import java.util.ArrayList;
import java.util.List;
import java.util.Random;


/**
 * @author zuoxiaolong
 *
 */
public abstract class RandomArray {


    public static int[] random(int length){
        if (length <= 0) {
            return new int[0];
        }
        List<Integer> list = new ArrayList<Integer>(length);
        for (int i = 0; i < length; i++) {
            list.add(i);
        }
        int[] array = new int[length];
        for (int i = 0; i < length; i++) {
            array[i] = list.remove(new Random().nextInt(length - i));
        }
        return array;
    }
    
    public static void main(String[] args) {
        int[] array = RandomArray.random(10);
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i < array.length - 1) {
                System.out.print(array[i] + ",");
            } else {
                System.out.print(array[i]);
            }
        }
        System.out.print("]");
    }
    
}


import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;




public class RandomTest {


/**
* @param args
*/


public static int [] getArray(int length){
int index = 0;
int [] a = new int[length];
Random r = new Random();
Set<Integer> set = new HashSet<>(length);
while(set.size()<length){
set.add(r.nextInt(length));
}
for(Iterator<Integer> it = set.iterator(); it.hasNext();){
a[index] = it.next();
index ++ ;
}
return a;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] a = RandomTest.getArray(100);
for(int i = 0; i<a.length; i++){
System.out.println(a[i]);
}


}


}


九、楼主博客:
http://www.zuoxiaolong.com
http://www.zuoxiaolong.com/

http://www.cnblogs.com/zuoxiaolong/


十、Java基础

1、HashMap等集合的底层实现、concurrent包的类

2、面相对象概念、Java内存模型

3、框架:Spring MVC、Spring、Hibernate、Mybatis特点、

4、数据库:Mysql索引和优化,

5、计算机基础:计算机网络、看算法排序,查找,动态规划,分治

6、对于做过的项目,会画系统架构图


十一、面试问题:

1、Spring的特点! “IOC和AOP

2、Spring AOP是怎么实现的

3、聊聊面向对象吧
4、你自己写个线程池,说说思路

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值