实用 - Java后端面试经历(经验分享)适用于2~3年

前言

因为某些个人原因,或者其他不可控因素,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过程

         *

         *

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值