4面经---java 内附 计算机基础知识链接(知识点概括)

1.应该从哪方面准备

就笔试而言,选择题应该从数据结构,*作系统,基础算法,网络这四个方面准备。编程题应该侧重动态规划和回溯。

就面试而言,javaweb和Java源码、和jvm是基础的,如果面试非阿里系的,准备这些足够,但是要是面试阿里或者美团,就要学学中间件,中间件也要知道原理。

2.什么时候准备最好

大三上准备最好,当然是先为春招做准备,个人感觉春招是最容易进大公司的,编程方面考核的不怎么难,原理考察的多。这个时候应该扎实基础,多看书,深入理解JVM一定要看会,多记笔记,个人觉得记笔记是一个好习惯,毕竟复习的时候就会速度的多。还有的话就是一本书看完了,我们可能很烦看第二遍,我们可以找一本相同知识点的书再看一遍做互补,毕竟每个作者对同一个 东西的理解不同。就拿jvm来说吧。我就看了深入理解jvm和jvm故障调优与实战这两本书(笔记在博客中,有兴趣的可以看看目录=_=:https://github.com/shiker1996/jvm-knowledge/blob/master/README.md),这两本书都是讲jvm的,但是对知识点的概括,还有实*等方面都不同。(下面的笔记都是看书的时候记的。)(下面的笔记都是看书的时候记的。)

个人感觉做什么东西千万不要学过就只是学过,还是要留点东西的,这样以后好捡起来 。然后我春招其实投的少,大公司投了一两个,小公司也只投了一两个,其实应该多投几个。。。希望以后的童鞋吸取我的经验吧。既然说到这,我就把自己的春招经验分享以下吧(懒得打字了,直接把当时的备忘录给大家看一下吧)。

我的博客也是之前的笔记整理,这个不仅给别人看,关键是自己复习方便,随时都能看。

春招只是走一走流程,看一看自己缺什么,还有那方面没有复习到的。而且春招的面试给了我一个很强的预感:面试要是有三个问题答不上来基本凉凉(暴露了自己菜的本质+-+)。

3.备战秋招

备战秋招,很多人都会觉得时间不够用了,其实这很正常,大部分时间都要刷题了==||,但是整理整理之前的笔记还是很快的呀。。。所以我就开始写博客整理自己之前的笔记(抱歉到现在都没整完++)。。这个是很有用的。可以在写的过程中知道自己哪方面还不足,查漏补缺。不会的我一般都会先看书,再参考他人的博客,这个看网文的时候一定不要看完就完了,,要做好标签。(下面是我的,顺便举个例子。。。)


4.笔试准备

选择还是在牛客就好。我一般都是下面这几个组一套,这样更接近真题,然后千万被刷几道,这样没效果,最好一次来二三十道。集中一两个小时来刷,效果会更好。

编程题的话有两个网站不错。一个是赛码网,一个是leetcode,这个一个是自己写输入输出,一个直接写方法,两者要结合起来刷,leetcode呢,就像我之前说的一样,最好按题型来做,这样容易培养自己的思路,不容易养成道道看答案的坏习惯。

编程题的话,作答也是要讲究的,最好输入输出与程序处理分开这样好纠错,我的编程模板如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()) {

            /**

             * 输入块

             */

            int n = sc.nextInt();

            int a[] = new int[n];

            for (int i = 0; i < a.length; i++) {

                a[i] = sc.nextInt();

            }

            int b[] = new int[n];

            for (int i = 0; i < b.length; i++) {

                b[i] = sc.nextInt();

            }

            /**

             * 方法处理与结果

             */

            int res = different(a,b);

            /**

             * 输出结果

             */

            System.out.println(res);

        }

        sc.close();

    }

    /**

     * 具体的处理方法

     * @param a

     * @param b

     *[@return](/profile/547241) */

    private static int different(int[] a, int[] b) {

        // TODO Auto-generated method stub

        return 0;

    }

}

5.面试准备

很多人都说,啥时候了,还让我看书,哪有时间看书,有那时间自行车都造出来啦!

好吧,其实不看书,多看看github上的开源项目也是好的,我在这里提供一两个吧:

https://github.com/frank-lam/2019_campus_apply

https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

这里我在多说一点吧,java一般问基础都会,要想让自己脱颖而出,最好是rpc、注册中心(选举算法)、消息队列(路由、推拉)等等都要了解,能说会编,这样被问的时候才不容易凉。

一般面试的时候如果有手写代码的情况大多是剑指offer上的题,所以一定要把牛客网上剑指offer的题刷懂,最好结合书中的思路来做,每道题的思路是什么,每种思路的优劣大概要了解。

嗯,还有,常见的几个面试问题,例如大文件排序、秒杀系统、还有点击链接到显示页面的过程,都要去了解一下,回答的深度也反映了自己会的程度,比方说最后一个问题,能从网络层回答属于基础水平,能回答出请求到servlet的封装就高了一层次,你要是给他打出来tomcat原理,那面试官会wa,这个人可以,你要是再给他把服务器的虚拟ip到目标服务主机的映射说出来,那面试官能不要你吗?我不信QAQ...所以多上网上看看这些问题别人怎么答的,然后结合自己的只是总结以下,没有能给我们一个适合自己的碗筷,还是要自己总结一下的。

其实这样的项目有很多,大家要自己上网搜一搜,多关注几个微信公众号啥的,例如importNew、java编程、java3y(这位兄弟请给我打广告费)。

上面两个挑自己不会的看就行,抓重点,别的话应该就这些,其它秋招面经我就不说了,大概别人都重复多少遍了。。。就这样。

猜你喜欢

转载自blog.csdn.net/zj15527620802/article/details/83188640