前言
因为某些个人原因,或者其他不可控因素,IT行业跳槽肯定在所难免。
这也意味着,你会离开一个熟悉的环境,想方设法的去融入另一个陌生的环境,接触新的同事。希望你的同事人都超级棒~
这篇博客可能只适用于一些2~3年,每天勤勤恳恳写代码,按时完成日常任务的中级程序猿。
毕竟,技术宅男都是大佬,随便换工作,公司都是抢着要。
准备工作
求职简历:简历里面,我觉得有一点很重要,就是如果你对某个框架底层原理并不熟悉,只是项目中使用到了,那么,建议在简历里面这样写:了解并使用xxx框架/技术。
求职App:目前,App主要推荐:猎聘,Boss直聘。 诈骗公司,培训机构相对而言较少,HR回复也比较快(个人感触),app上面的信息都一一完善,包括个人信息,工作经验,项目经验等,尽可能的多写,不要嫌麻烦~~~ 朋友内推也是一种途径
小小建议
1、所谓不打无准备的仗,复习几天,再开始投简历!!不然,你一点没准备,突然通知你面试,又是你很想去的公司,那可能就错过了~
2、准备得差不多了,就可以试着投简历。投简历时仔细看公司招聘要求,有选择性,目的性的投(至少他写的技术你要会一大半吧)。
3、多面试,积累经验。一次两次没面上无所谓,总结失败原因(下来看技术面试时没答上来,或者自己一知半解的知识点,要有针对性的去学习,实践),为下一次面试做准备。
如何复习
工作这几年,每次面试之后,把面试中问到的技术包括一些题做了汇总。分享给大家,大体知识点如下:
一、Java基础
1.显示转换和隐式转换
2.== 和 equals()区别
3.集合源码
4.位运算(源码里面经常用到)
5.多线程
6.Java众多设计模式中常用的几种
7.反射机制
8.封装,继承,多态,抽象
9.java的八大基本数据类型你得记得吧?
10.java的自动拆箱和装箱
11.CountDownLatch的作用和源码
@SpringBootTest
class JavaStudyTest {
@Autowired
// @Qualifier("student")
// @Resource
private StudentService studentService;
public static void main(String[] args) {
System.out.println("ss");
Person person = new Student();
person.eat();
Integer i = 12;
Integer ii = Integer.valueOf(129);
Executors.newFixedThreadPool(4);
}
/**
* 1.显示转换和隐式转换
* <p>
* byte -> char -> short -> int -> long ->float -> double -> boolean
* 隐式转换,计算时会编译器自动转换,从小到大
* 可查看target文件夹下面对应的字节码文件,编译之后的代码
*/
@Test
public void test1() {
try {
short s = 1;
//s += 1 == s=(short)(s+1)
s += 1.1D;
System.out.println("s........." + s);
System.out.println("这里的s从double强转成short,会确实精度,结果不是2.1,而是2");
// s = s + 1;
String str = "abcd";
boolean equals = str.equals("ddd");
} catch (Exception e) {
}
}
/**
* 2.== 和 equals()区别
* <p>
* java.lang.Object getClass(),equals(),hashcode(),toString(),wait(),notify(),notifyAll,finalize(),
*
* Integer 能用==判断相等吗?-128 ~ 127 ,为什么?主要要有个缓存概念
*/
@Test
public void test2() {
String str1 = new String("abc");//这个过程是运行时在堆内存中实时创建一个对象。
String str2 = new String("abc");//这个过程是运行时在堆内存中实时创建一个对象。
System.out.println(str1.equals(str2));//比较的是两个对象的值,是true
System.out.println(str1 == str2);//比较的是两个对象地址,是false
}
/**
* 3.集合
* <p>
* Collection -> List -> ArrayList(初始化大小10,扩容为为之前的1.5倍),LinkedList,Vector(线程安全,扩容为之前的2倍) Set -> HashSet,
* Map -> HashMap (阈值16,2的倍数,负载因子为0.75,当map的size超过0.75就扩容为之前的2倍),TreeMap,HashTable(线程安全,key不能为null) ->CurrentHashMap (高并发,保证线程安全)
*
* 重点:HashMap,CurrentHashMap(线程安全)的源码,包括默认的一些参数,put(),get()时大致流程,什么时候扩容,扩容过程,尽可能记清楚。
*/
@Test
public void test3() {
List list = new ArrayList();
List list1 = new LinkedList();
list1.add("");
Map map = new HashMap();
map.put("number", "");
Set set = new HashSet();
list.add("e");
if (list != null & "e".equals("d")) {
System.out.println("");
}
int[] intArray = new int[10];
intArray[0] = 1;
String[] strArray = {};
strArray[0] = "ll";
ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
concurrentHashMap.put("test", "xjc");
concurrentHashMap.get("test");
System.out.println(concurrentHashMap.get("test"));
/**
*
* ------
* 一. HashMap put过程
*
*