工作需要的技能Java知识点大全我爱编程

广州三本找Java实习经历

2018-06-21  本文已影响123人  Java3y

前言

只有光头才能变强

这阵子跑去面试Java实习生啦~~~我来简单介绍一下背景吧。

广州三本大三在读,在广州找实习。大学开始接触编程,一个非常平庸的人。

在学习编程时,跟我类似的人应该会有一个疑问:究竟学到什么程度才能找到一份实习/工作呢

我是在6月1号开始投的简历找Java实习:

实习憎投了17份:

image

在前程无忧投了69份(没有算今天刚投的):

image

在boss直聘沟通51个,可以发送8份简历出去:

image

下面是我的简历(我不会写简历,需要修改的地方还请大家不吝在评论区留言)

image

可能投递的公司是有重复的,可能我投递的意向更多偏向于离家里比较近的,并不是全部投应届/实习(其中1-3年的也投了)。

这篇文章其实主要是记录一下自己的面试经历,希望大家看完之后能有所了解:进入中小公司究竟需要什么水平

一、公司A

1.1面试

  1. 简单介绍一下你的项目,说一下项目有什么模块
  2. 刚才我进去注册了一下你写的网站,发现注册失败了。你的网站是做了邮箱校验吗?ps:后来查了一下,是我的邮箱验证码失效了,在后台抛出异常,所以注册失败了
  3. 项目中的在线聊天功能是怎么实现的?有没有去测试浏览器的兼容性问题?
  4. 我看你有用过ssm/Springboot,你的项目部署在哪里?ssm的项目打的什么包?springBoot打的什么包(指的是jar和war)
  5. Java集合简单说一下,HashMap是怎么实现key是唯一的
  6. 简单说说nio是什么,是哪个版本开始有的?
  7. aio是什么?了解过吗?是哪个版本开始有的?与nio的区别知道吗?
  8. 有了解过netty吗?
  9. 我看你用过RESTful,你能简单说说RESTful有什么特点吗?使用RESTful的好处是什么?RESTful有什么缺点吗?
  10. 电子移动商城和纳税服务系统是你做的吗?
  11. 简单说一下你是怎么理解AOP,方法拦截和AOP有什么区别?xxxx功能是否能用AOP实现

1.2公司A总结

公司A是我第一家面试的,面了20多分钟就完事了...没有hr,自我介绍都没说就直接开始了。当然了,面试官还是很nice的。

经过这家面试,我知道我自己得多引导引导面试官。因为面试的时间太短了,基本都是一问一答,应该主动说出一些自己知道的东西,答得太少了

最后拿到了offer

二、公司B

2.1笔试单选题

关注Java3y公众号的概率是5%,收藏Java3y的文章概率是20%,收藏Java3y的文章后会关注Java3y的公众号的概率是20%,已知某开发者看到Java3y公众号之后关注了。那么该开发者收藏过Java3y的文章概率是多少?

通俗解析:

公式解析:

假设基准值为数组首元素的快速排序,要使得数组满足非降序排列,下列数据分布导致快排算法效率最低的是____。

解析:基本有序的情况下:快排最慢。所以选择的是1-2-3-4-5-6-7

下列程序运行结果:

image

解析:false,因为==默认比较的是地址,引用a和引用b所引用的地址是不一样的。

关注线程和进行,描述正确的是(多选):

解析:选择BCD

在一个的程序中有A,B,C三个线程同时对一个文件进行读写操作,其中的A,B是写进程只负责往里面写数据,C是读线程,同时把读取的数据从文件中删除,A线程单独写满文件需要10小时,B线程单独写程序需要6小时,C线程需要15小时才能读取完整个文件,不考虑三个线程之间的相互影响的情况下,现在_____小时才能写满文件。

解析:选择A

mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 现在想获取每个学生所选课程的个数信息,请问如下的 sql 语句正确的是:

解析:选择B

下列结果正确的是:



class Person {

    String name = "do1";

    public Person(String name) {
        this.name = name;
    }
}

class Employee extends Person {

    String empId = "0001";
    public Employee(String name) {
            empId = id;
    }
}

class Test{

    public static void main(String[] args) {

        Employee e = new Employee("test");
        System.out.println(e.empId);
        
    }
}

解析:选择B

IDEA的提示也很准确:

image

如下javascript代码y最终输出的结果是:


var x= 1;
var y = 0;
function add(n){
    n = n+1;
}

y = add(x);

解析:选择D

image

下列哪些是JSON格式结构(多选)

解析:选择AB

image

话说{'java','javascript'}这个在JavaScript算什么?会的麻烦在评论区告诉我一下哈~~

对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列属于访问控制属性的是:

解析:选择ABC

以下集合对象不是线程安全的:

解析:选择A

下面描述正确的是(多选):

解析:选择AD

下列对正则表达式描述正确的是:

解析:选择B

Linux解压的命令(多选)

解析:选择AB

2.2笔试简答题

已知一个包含10个随机数字的数组,数字不重复,给定其中的两个随机数,获取这两个数在随机数组从小到大排序后在数据中的坐标值。时间复杂度尽量低一些

使用快排的partition,将给出的随机数做基准值返回的坐标就是了。两个随机数就调用两次快排的partition。


    // 支点左边都比支点小,支点右边都比支点大
    public int partition(Integer[] nums, int target) {

        int lt = -1;//[0,lt]<target
        int gt = nums.length;//[gt,nums.length-1]>target

        int i = 0;
        while (i < gt) {
            if (nums[i] == target)
                i++;
            else if (nums[i] < target) {
                lt++;
                swap(nums, i, lt);
                i++;
            } else {
                gt--;
                swap(nums, gt, i);
            }
        }

        // 返回支点的坐标
        return gt - 1;
    }

    private void swap(Integer[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }


上边代码由HoldGone友情提供!

Error,Exception,RuntimeException区别

这部分的资料就很多了,我这里就不详细答了。参考一下吧:

有一亿条记录,每条记录有id,ip,时间组成。设计一个系统能够快速查询以下内容:给定ip和时间段(精确到分钟)统计ip的访问次数,请写出创建SQL的语句

答:首先,1000亿条记录全部放到内存肯定不够,那就是分成小文件了,然后整合;
公共的时间段,因为精确到分钟,我们把这每一分钟建成一个小文件,每个小文件肯定会有许多重复的ip,url;
现在统计每个小的文件中url的访问量和ip的访问次数,方法就是建立索引;
(建立索引的目的是为了减少查询次数,但是随着索引级数增多也会造成花更多的时间在建立索引上);
建立url的索引,假如是www.nowcoder.com/question,可以分别给www.nowcoder.com和question建立索引,那么来了一条url,先看一级索引是不是匹配,匹配再看二级索引,相同的话就是我们要的url目标;
ip的索引也是一样,ip分成4段建立索引;
所以这里影响效率的就是在索引建立这块,索引建立好那就是查询的事了的,就会变得非常快。
假定给定了某个时间段,找出url的访问量,那么先找到给定的时间段,对应着刚开始分割的小的文件(每一个分钟)中搜索,通过索引找到相同的url之后,开始统计,直到搜索完所有的给定时间段内的所有的小的文件;
求ip的访问次数也是一样,按照给定的时间段,找到对应的小的文件,通过索引找到相同的ip后统计,直到搜索完了给定时间段内的所有的小的文件。

链接:https://www.nowcoder.com/questionTerminal/5b47d462f04c4e43960fd9e52da93ab7?orderByHotValue=1&pos=4&tagId=0
来源:牛客网

2.3初面

  1. 简单介绍一下你自己
  2. 面向对象有什么特性?你如何理解面向对象的
  3. 面向对象与面向过程哪个更好写?
  4. 谈谈AOP,AOP在实际项目/实际能做什么?
  5. 如果让你实现Spring的缓存@Cacheable,你会怎么实现?(面试官想问的是AOP,我把他带到Map那边了)后来才说到了AOP。
  6. 索引是怎么提高查询的性能的?具体来说说索引。
  7. 既然说String是不可变的,那么String s = "aaa",为什么同样可以执行a = "bbb"
  8. String是怎么做到不可变的?final修饰的类中的成员变量是否可变?确定吗?String什么时候被销毁?
  9. 看你使用过Nginx,讲讲Nginx。正向代理与反向代理有什么区别?
  10. 看你使用过RESTful,讲讲PUT/GET/POST/DELETE分别的含义,使用RESTful和非RESTful的URL有什么区别?
  11. 看你用过Elasticsearch,你知道bool是什么吗?Elasticsearch能使用root用户执行吗(我回答的是可以)?为什么?用root用户执行和其他用户执行有什么区别?
  12. 你项目是部署到Linux的,你记得Linux修改权限的命令是什么吗?读写执行分别代表的是什么?777,每个7的代表什么。
  13. 密码是用md5加密的,那md5是可逆的吗?那如果现在想实现一个功能:用户想要找回自己的密码(不是修改密码,单纯找回密码),那现在md5是不可逆的,那你怎么设计呢?
  14. 了解过多线程吗?你知道线程池默认有哪几种实现吗?如果线程池满了,那其余的线程怎么办?工作队列是怎么实现的?工作队列是先进先出的吗?可以优先执行工作队列的某线程吗?
  15. 你用过Redis吗?,后面又问了一些Redis安全性的东西。
  16. 你知道什么是分布式和集群吗?
  17. 在集群的环境下,Session一般怎么解决?
  18. 在集群中如果redis down掉了怎么办?第二台redis又down掉了怎么办?

2.4复试

  1. 简单介绍一下你自己
  2. 面向对象有什么特性?你如何理解面向对象的
  3. 了解String常量池吗?String s = "aaa";String b = "aaa";相比,它俩会相等吗?
  4. 简单介绍一下你写过的项目。
  5. 我看你用到了Shiro,Shiro是什么东西呢?简单说说你在项目中是如何使用Shiro的
  6. Elasticsearch又是什么东西呢?简单说说你在项目中是如何使用Elasticsearch的
  7. 你一般用的数据库是什么?Mysql的索引了解过吗?可以简单说说嘛?
  8. Mysql有没有比int类型还要小的整型类型?
  9. 来说说你项目还有什么功能。(我谈了个人备忘录,使用了Quartz任务调度框架-->cron表达式-->发邮件提醒)
  10. 现在有这么一个需求:一个用户可以填写多张调查问卷。调查问卷的数据是不确定的,可以是性别啊,工作年薪呀,等等等。现在你数据库怎么设计呢?

2.5公司B面试总结

经过上一家面试的总结,我带了一个本子和笔去面试,面试官提问的时候我会在本子上写写,画画图来告诉面试官表现我的思路。

公司B是我面的第二家公司:总的来说这次面试遇到了我一大堆不懂的东西,可以说被面试官虐了。面的题目都是相对开放的,问我某个功能如何设计、如何实现、是否可以使用某项技术实现这个功能。

对Redis/数据库设计/数据库SQL编写/Elasticsearch知识点储备还是不够啊~~这些知识点得多加把劲了.

2018年6月21日12:52:05,今天早上拿到offer

三、公司C

3.1笔试选择题

下列关于注释语句的描述中,正确的一项是。

解析:选择C

为了区分重栽多态中同名的不同方法,要求

解析:选择A

下列哪一个说法是正确的

解析:选择B

在Java中,下列运算符合法的是

解析:选择A

下面定义数组的格式中不正确的是

解析:选择B

下列哪一个说法是正确的:

解析:选择A

image

可以用来修饰interface的是

解析:选择B

以下哪个表达式是不合法的。

解析:选择B

image

线性表采用链式存储时,其地址:

解析:选择D

关系数据库中的“关系”是指:

解析:选择C

以下对抽象类的描述正确的是:

解析:选择C

以下对接口描述错误的有:

解析:选择D

以下对异常的描述不正确的有

解析:选择C

在try-catch-finally语句块中,以下可以单独与finally —起使用的是

解析:选择B

下列关于for循环和while循环的说法中哪个正确的?

解析:选择A

下列关于构造方法的叙述中,错误的是:

解析:选择C

下列哪些语句关于Java内存回收的说明是正确的?

解析:选择B

结构化程序设计所规定的三种基本控制结构是

解析:选择C

给出以下代码,请问该程序的运行结果是什么?



class Example{

    public static void main (String args[]){

        boolean b=true;

        System.out.println(b);
    }
}

解析:选择A

image

3.2笔试题不定选

下列属于关系型数据库的是:

解析:选择AB

以下属于面向对象的特征的是()。

解析:选择CD

在使用super和this关键字时,以下描述正确的是:

解析:选择A

以下关于final关键字说法错误的是:

解析:选择AC

访问修饰符作用范围由大到小是:

解析:选择D

根据下面的代码,String s = null;会抛出 NullPointerException 异常的有:

解析:选择AC

Java中,哪个接口以键值的方式存储对象

解析:选择B

Java接口的修饰符可以为:

解析:选择CD

以下哪些代码片断正确:

解析:选择ABD

image

以下哪些代码片断正确:

解析:选择D

image

3.3笔试简答题

JRE/JDK/JVM分别指什么?他们的关系是怎么样的?

接口和抽象类的区别是什么?

Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用了?

简述Java的接口和C++的虚类的相同和不同处

JSP和Servlet有哪些相同和不通点,他们之间的联系是什么?

什么是流,流经常按照哪几种方式分类,每种方式又将流各分为哪几类?他们之间的区别是什么?

其实这些简答题每个人写出来可能都会不一样,按自己的理解大胆写就可以了

3.4面试

这次面试问的技术并不是很多,主要问的日常的东西~~~

3.5公司C总结

做的笔试题都是Java基础,挺合我胃口的(hahaha)

拿到了offer

四、公司D

4.1笔试题

在拿到试题的时候,前台告诉我限时40分钟做完,我以为就她说说。后来40分钟过去了,我剩下一题选择题还没做出来,卷子就收走了。我凭记忆简单说一下题型吧

选择题:

SQL题:

程序题/简答题:

4.2初面

  1. 简单介绍一下你自己
  2. 你觉得你在学校学习比较好的课程是什么?
  3. 你说你自学Java,你觉得自学和老师上课的方式这种有什么区别?
  4. 你觉得哪些是你自学没学到,在老师那里学到的。还有就是哪些是你自学学到的,在老师那里没学到的。
  5. 你觉得你擅长什么?可以简单说说嘛?(我选了Java集合)
  6. 那你简单说说ArrayList和LinkedList的东西吧(我就说我看过源码,以及说了底层的一些东西)
  7. 为什么说ArrayList增删慢呢?为什么说LinkedList查询慢呢?
  8. 你说你知道ArrayList在增删改的时候用的arraycopy()方法,你知道它是怎么实现的吗?
  9. 看你用过Cookie,简单说说Cookie是什么吧,为什么需要Cookie
  10. Cookie一定是服务端发送过去的吗?是怎么发送的?
  11. 使用的时候Cookie有什么弊端(需要注意些什么)?
  12. get和post有什么区别?
  13. 使用post方式的时候,在url上可以拼接参数吗?
  14. 来说说http的状态码有哪些
  15. 分别谈谈这些状态码都代表什么意思
  16. 上面已经说了get和post了,那你还知道http有其他的原语吗
  17. 来说说https吧,https是什么东西
  18. 你知道https的工作流程吗?
  19. SSL???忘记问什么了,这个我不会。

4.3公司D总结

笔试题大多都是考Java基础,也不算难。就是题量有点多,就给40分钟可能有点紧。

总的来说初面考HTTP的知识比较多,这方面还得深入加强一下。

2018年6月21日12:52:25,今天早上收到邮件,一面不过。

五、公司E

5.1面试

这家也主要围绕着简历来问:

5.2公司E总结

主要问某项技术是如何理解的,看你是否理解了这项技术。

拿到offer

六、总结

花了半个月时间吧,写简历-->投简历-->收到面试邀请-->约面试时间-->面试-->(中公司有二面,大公司可能更多)-->拿到offer(或者拒绝)

最后的成绩:面了5家公司,拿到4个offer。

至于在Java实习生广州的薪酬方面,不同公司给出的薪酬都不一样。有的公司按天数算(上班天数),也有按月算。呃,就我个人认为在广州大部分给出的薪酬在2500-3500。

通过这次面试,还是发现自己薄弱的地方有很多啊,得多补补才行,面试也没想象中那么刁难。

下一篇我就整理点我在面试前找到的,或者觉得比较好的资料吧~~

好久没写过文章啦~~~实习了以后应该就不会像在学校的时候更新那么频繁了,可能一个星期一篇?这我也不确定,反正文章总结我还是会写的。还有好多好多想学的,想写的呢。

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航:https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang

上一篇 下一篇

猜你喜欢

热点阅读