37

广州三本找Java实习经历

 5 years ago
source link: https://segmentfault.com/a/1190000015349795?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

只有光头才能变强

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

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

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

  • 针对的是中小公司..

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

实习憎投了17份:

7zaYbmN.png!web

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

7zaYbmN.png!web

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

7zaYbmN.png!web

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

7zaYbmN.png!web

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

  • 就上面所投和简历的情况,我拿到了 5份 面试机会。

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

  • 看面试题实际面试时被问到 的感觉是 完完全全不一样 的(可能会没听明白面试官所想问的,也很有可能大脑就短路啦,就忘记啦)

一、公司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、关注概率=5%。   
  • 2、关注有两种情况,收藏关注,不收藏关注 。
  • 3、收藏关注概率=0.2*0.2=0.04,那么不收藏关注的概论是0.01
  • 4、在已知用户购买的情况下:收藏的概率是0.04/(0.01+0.04)=80%

公式解析:

  • 设A为关注,B为收藏。 已知 P(A)=5%, P(B)=20%, P(A|B) = 20%。 ,所以 P(B|A)=P(AB)/P(A) = P(A|B)P(B)/P(A) = 80% .

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

  • 2-6-3-7-5-1-4
  • 6-2-3-5-4-1-7
  • 7-5-3-2-4-1-6
  • 1-5-7-2-4-6-3
  • 1-2-3-4-5-6-7
  • 4-1-3-7-5-6-2

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

下列程序运行结果:

7zaYbmN.png!web

  • false
  • true

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

  • String a = "hello"; 在常量池中创建了对象
  • String b = "he" + new String("llo"); 在常量池中创建了 he ,在堆中创建了 llo"

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

  • A:同一个进程的线程之间共享内存,包括堆和栈
  • B:线程在资源消耗上通常要比进程轻量
  • C:进程的隔离性要好于线程
  • D:进程间有途径共享大量内存中的数据

解析:选择BCD

  • A选项:栈数据是线程自有的
  • B选项:引出线程就是因为(管理/切换/创建/销毁进程)进程消耗资源太多了
  • C选项: 进程之间的资源是独立的 ,子进程使用 copy_on_write 技术复制父进程的资源;而 同一个进程中的线程共享资源 ,每个线程拥有自己的栈和相应的寄存器;
  • D选项:用于进程间通讯(IPC)的四种不同技术:

    • 一、 消息传递(管道,FIFO,posix和system v消息队列)
    • 二、 同步(互斥锁,条件变量,读写锁,文件和记录锁,Posix和System V信号灯)
    • 三、 共享内存区 (匿名共享内存区,有名Posix共享内存区,有名System V共享内存区) 
    • 四、 过程调用(Solaris门,Sun RPC) 

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

  • A. 5
  • B. 6
  • C. 5.5
  • D. 4.5
  • E. 4.8
  • F. 5.3

解析:选择A

  • 不考虑三个线程之间的相互影响,突然回到了小学数学题:“两个水龙头注水,一个放水,问何时注满水池”的感觉。这样问题就简单了:

    • 总任务是单位1,A的写工作效率是 1/10 ,B的写工作效率是 1/6 ,C的读工作效率是 1/15 ,那么总工作效率是 1/10 + 1/6 - 1/15 结果是 1/5 。于是,写满的总时间是:用单位1除以总工作效率五分之一,就是5小时。

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

select student_id,sum(course_id)from learn
select student_id,count(course_id)from learn group by student_id
select student_id,count(course_id)from learn
select student_id,sum(course_id)from learn group by student_id

解析:选择B

  • 获取每个学生所选课程就按照学生分组,统计个数就用count

下列结果正确的是:

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);
        
    }
}
  • A. 输出do1
  • B. 编译出错
  • C. 输出test
  • D. 输出0001

解析:选择B

  • 这题主要考察对象创建的过程。如果子类的构造函数中 没有显式调用父类的构造器 ,那么默认会调用父类无参的构造函数。但是代码中没有给出父类的无参构造函数,所以编译时不通过的。

IDEA的提示也很准确:

7zaYbmN.png!web

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

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

y = add(x);
  • A. 1
  • B. 2
  • C. 3
  • D. undefined

解析:选择D

  • 没有明确的return ,返回的是undefined

7zaYbmN.png!web

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

{id:'1',name:'do1'}
['java','javascript']
{'java','javascript'}
[id:'1',name:'do1']

解析:选择AB

  • JSON建构于两种结构:

    • “名称/值”对的集合 (A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    • 值的有序列表 (An ordered list of values)。在大部分语言中,它被理解为数组(array)。
    • 参考资料: http://www.json.org/json-zh.html

7zaYbmN.png!web

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

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

  • A. public
  • B. private
  • C. protected
  • D. volatile

解析:选择ABC

  • 这题Java基础题,就很简单了。volatile是一种轻量级的同步机制。

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

  • A. ArrayList
  • B. Vector
  • C. Hashtable
  • D. Stack

解析:选择A

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

  • A. session是代表与用于某个web应用程序相关的对象和属性
  • B. request代表与Web客户机发出的多个请求相关的对象和属性
  • C. page代表与web客户机的一次请求
  • D. application代表与整个Web应用程序相关的对象和属性

解析:选择AD

  • request代表与Web客户机发出的 一个 请求相关的对象和属性
  • page代表与一个 页面相关 的对象和属性

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

\D
\s
\t
\n

解析:选择B

  • \D 匹配一个 非数字字符
  • \s 匹配任何不可见字符,包括空格、制表符、换页符等等
  • \t 匹配一个制表符。
  • \n 匹配一个换行符。

    • \r 匹配一个回车符

Linux解压的命令(多选)

  • A. tar zxvf filename.tar
  • B. gzip -d filename.gz
  • C. gzip filename
  • D. tar czxf filename.tar

解析:选择AB

  • 考察Linux的解压命令

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/ques...

来源:牛客网

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笔试选择题

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

  • A.以/ 开始, /结束的是单行注释语句
  • B.以//开始的是多行注释语句
  • C.以/ *开始, /结束的是可以用于生成帮助文档的注释语句
  • D.以/ *开始, /结束的是单行注释语句

解析:选择C

  • A是多行注释
  • B的单行注释
  • D是文档注释

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

  • A. 形式参数个数或者类型不同
  • B. 返回值类型不同
  • C. 调用时用类名或对象名做前缀
  • D. 形式参数名称不同

解析:选择A

下列哪一个说法是正确的

  • A. Java程序经过编译后会产生机器码
  • B. Java程序经过编译后会产生字节码
  • C. Java程序经过编译后会产生DLL文件
  • D. 以上都不正确

解析:选择B

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

  • A. &&
  • B. < >
  • C. if
  • D. :=

解析:选择A

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

  • A. int a[10]
  • B. int a = new int[10]
  • C. int a[]
  • D. int[] a = new int[]{10}

解析:选择B

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

  • A. 实例方法可以直接调用超类的实例方法
  • B. 实例方法可以直接调用超类的类方法
  • C. 实例方法可以直接调用其他类的实例方法
  • D. 实例方法可以直接调用本类的类方法

解析:选择A

7zaYbmN.png!web

可以用来修饰interface的是

  • A. private
  • B. public
  • C. static
  • D. protected

解析:选择B

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

  • A.String x="hello";int y=9;x+=y;
  • B.String x="hello";int y=9;if(x=y){}
  • C.String x="hello";int y=9;x=x+y;
  • D.String x=null;int y=(x!=null)&&(x.length()>0)?x.length():0;

解析:选择B

7zaYbmN.png!web

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

  • A.必须是连续的
  • B.部分地址必须是连续的
  • C.一定是不连续的
  • D.连续与否均可以

解析:选择D

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

  • A.各条记录彼此都有一定关系
  • B.各字段数据被此都有-定关系
  • C.数据模型是一个满足一定条件的二维表
  • D.表文件之间存在一定关系

解析:选择C

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

  • A.抽象类没有构造方法
  • B.抽象类必须提供抽象方法
  • C.有抽象方法的类一定是抽象类
  • D.抽象类可以通过new关键字直接实例化

解析:选择C

  • A:抽象类是有构造方法的
  • B:抽象类未必需要提供抽象方法
  • D:抽象类既然是抽象的,怎么可以直接new实例化呢

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

  • A.接口没有提供构造方法
  • B.接口中的方法默认使用public、abstract修饰
  • C.接口中的属性默认使用public、static、final修饰
  • D.接口不允许多继承

解析:选择D

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

  • A. 异常分为 Error 和 Exceptipn
  • B. Throwable是所有异常类的父类
  • C. Exception是所有异常类父类
  • D. Exception 包括 RuntimeException 和 RuntimeException 之外的异常

解析:选择C

  • Throwable是所有异常类的父类

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

  • A. catch
  • B. try
  • C. throws
  • D. throw

解析:选择B

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

  • A.while循环能实现的操作,for循环也都能实现
  • B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结采
  • C.两种循环任何时候都可替换
  • D.两种循环结构中都必须有循环体,循环体不能为空

解析:选择A

  • B:判断条件和结果无关系
  • C:for(init;test;;increment) ,while(test) 由此可见,当for语句的初始化及自增部分为空时才能替换
  • D:虽然空循环体没意义,不过都是可用的.

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

  • A. Java语言规定构造方法名与类名必须相同
  • B. Java语言规定构造方法没有返回值,但不用void声明
  • C. Java语言规定构造方法不可以重载
  • D. Java语言规定构造方法只能通过new自动调用

解析:选择C

  • 构造方法当然可以重载了

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

  • A、 程序员必须创建一个线程来释放内存
  • B、 内存回收程序负责释放无用内存
  • C、 内存回收程序允许程序员直接释放内存
  • D、 内存回收程序可以在指定的时间释放内存对象

解析:选择B

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

  • A. 输入、处理、输出
  • B. 树形、网形、环形
  • C. 顺序、选择、循环
  • D. 主程序、子程序、函数

解析:选择C

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

class Example{

    public static void main (String args[]){

         boolean b=true;

        System.out.println(b);
    }
}
  • A.打印输出true
  • B.打印输出1。
  • C.编译错误,因为sout的参数只能为整数 ..
  • D.编译错误,如果把true改变为TRUE,则可使代码编译通过。

解析:选择A

7zaYbmN.png!web

3.2笔试题不定选

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

  • A. Oracle
  • B. MySqL
  • C. IMS
  • D. MongoDb

解析:选择AB

  • C:是层次数据库
  • D:是非关系数据库

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

  • A.重载
  • B.重写
  • C.封装
  • D.继承

解析:选择CD

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

  • A. 在子类构造方法中使用super ()显示调用父类的过早方法,super ()必须写在子类构造方法的第一行,否则编译不通过
  • B. super ()和this ()不一定要放在构造方法内第—行
  • C. this ()和super()可以同时出现在—个构造函数中
  • D. this ()和super()可以在static环境中使用,包括static方法和static 语句块

解析:选择A

  • 1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
  • 2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。
  • 3)super()和this()均需放在构造方法内第一行。
  • 4)尽管可以用this调用一个构造器,但却不能调用两个。
  • 5)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • 6)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
  • 7)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

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

  • A. final是java中的修饰符,可以修饰类、接口、袖象类、方法和属性
  • B. final修饰的类肯定不能被继承
  • C. final修饰的方法不能被重载;
  • D. final修饰的变量不允许被再次赋值

解析:选择AC

  • final修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。
  • final修饰的方法不能被重写而不是重载! 
  • final修饰属性,此属性就是一个常量,不能被再次赋值! 

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

  • A. private-default-protected-public
  • B. public-default-protected-private
  • C. private-protected-default-public
  • D. public-protected-default-private

解析:选择D

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

  • A. if( (s!=null) & (s. length()>0))
  • B. if( (sl=null) && (s. length()>0))
  • C. if( (s==null) | (s. length()=0))
  • D. if( (s=null) || (s. length()==0))

解析:选择AC

  • 出现异常主要是因为执行了s.length()这句话,所以A、B、C、D选项中只要没有执行到这句话的都是不会报空指针异常的。然后考查的第二点是短路逻辑运算符和非短路逻辑运算符。&和|为非短路逻辑运算符,无论两个语句为什么,一定会执行完毕,所以A、C两个是会报出异常的。

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

  • A. Collection
  • B. Map
  • C. List
  • D. Set

解析:选择B

Java接口的修饰符可以为:

  • A. private
  • B. protected
  • C. final
  • D. abstract

解析:选择CD

  • 这里的题目应该是Java接口可以出现的修饰符有哪些,所以我将C选上了。就看个人的理解吧~

以下哪些代码片断正确:

  • A. private final int theNumber = 017;
  • B. public int theNumber = 017;
  • C. public int theNumber = (octal)17;
  • D. public int THE_NUMBER = 017;

解析:选择ABD

7zaYbmN.png!web

以下哪些代码片断正确:

  • A. public transient static final int_FRAMEX =850;
  • B. private transient static final int_FRAMEX2 =850;
  • C. boolean b = 0;
  • D. this("a","b");

解析:选择D

  • AB都没有给出类型是什么
  • C明显就是错的

7zaYbmN.png!web

3.3笔试简答题

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

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

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

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

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

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

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

3.4面试

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

  • Shiro你当时是用来干嘛的?有创建用户与角色/权限的表来维护吗?
  • 你会使用Linux吗?能搭建环境吗?
  • 简单介绍一下你写过的项目

3.5公司C总结

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

  • 跟hr+技术聊
  • 再跟hr聊
  • 最后跟总经理聊

拿到了offer

四、公司D

4.1笔试题

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

选择题:

  • 给出先序和中序的遍历结果,问后序的遍历结果是什么
  • 连续几道关于 | , || , & , && 的选择题,写程序结果是什么
  • 一道是outer,inner的多循环判断,其中一个地方break掉outer循环,问其中的变量值等于多少
  • String s = "a1";String s2 = "a"+1 ,连续几道类似的题目,问结果
  • 还有一些流程控制,问程序结果的题。
  • ...其他的忘了...

SQL题:

  • 根据名字模糊查询,写出sql
  • 多表查询(这题现在想起来,我还忘记做了......)

程序题/简答题:

  • 删除某个文件目录下的所有文件,包括目录

  • 现在有一个线程A写N个数据进队列,有两个线程往队列取数据。

  • 类的加载过程

    • 类加载的过程包括了加载、验证、准备、解析、初始化五个阶段
  • 现在机子是2G内存,现在我有10G数据,现在我想对这些数据排序,如何设计呢?

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面试

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

  • 简单介绍一下你自己
  • 你在学校时间有没有做过什么课程设计?简单说说
  • 我看你做过商城项目,你当时是怎么做的呢?
  • 你认为这个商城项目最难的地方是在哪?你实现了之后,能运行吗?
  • 那个商城项目有多少人在使用呢?
  • 简单讲讲Hibernate和Mybatis的区别
  • 你学过Struts2啊,简单说说与SpringMVC的区别
  • 常用的NIO框架有哪些?除了netty你还知道有哪个吗?
  • 你的技术文章是写在哪里的?
  • 简单介绍一下Java集合吧
  • 短信验证你是怎么实现的?
  • 说说你是怎么理解SpringBoot的
  • Redis了解过吗

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK