酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

实习生准备面试java开发岗,一般会问什么问题呢?

<p>谢谢邀请!</p><p>作为一名从业多年的程序员,也出版过Java编程书籍,所以我来回答一下这个问题。</p><p>首先,对于刚学习完Java编程的准程序员来说,从实习岗位开始做起是比较现实的选择,一方面实习岗位不会有太大的工作压力,另一方面也能够积累大量的实践经验。</p><p>对于实习岗位的应聘,主要的问题将集中在以下三个方面:</p><p><span style="font-weight: bold;">第一:Java的基本编程思想。</span>Java编程思想的考察主要集中在对于“抽象”的理解,比如类、接口、抽象类分别用于哪些场景,各自的作用是什么等等。面向对象的编程过程、封装、继承、多态等都是面试当中经常会遇到的问题。一些大型软件开发企业往往会在笔试中涉及到IO、多线程和网络编程(Socket)知识。</p><p><span style="font-weight: bold;">第二:数据库知识。</span>数据库知识通常是Java实习岗位考察的一个重点,包括基本的Sql语句,数据库部署等,另外需要掌握JDBC知识。虽然目前通过DAO框架,比如MyBatis,可以完成数据库映射(OO与OR),但是掌握JDBC的细节还是有一定必要的。随着大数据应用的逐渐普及,未来Java程序员也需要掌握NoSql数据库的相关技术。</p><p><span style="font-weight: bold;">第三:前端开发知识。</span>虽然Java开发以后端开发为主,但是前端开发知识通常也会涉及到一些,不少开发团队还比较关注Java程序员的前端开发能力。前端开发知识主要涉及到Html、CSS和JavaScript,其中JavaScript是重点内容,未来JavaScript将是程序员需要掌握的重要技能之一,因为目前JavaScript的应用边界被不断扩展,从前端开发到后端开发(Nodejs)再到嵌入式开发,都有JavaScript的身影。</p><p>如果应聘Web开发岗位,需要了解Spring框架知识,如果面试大数据开发岗位,还需要了解Hadoop、Spark平台知识。</p><p><span style="font-weight: bold;">我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。</span></p><p><span style="font-weight: bold;">如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!</span></p><p>关于Java面试,一般应该会问到下面这些问题。</p><p>[编程工具]</p><p>你常用的编程工具有哪些?这个问题主要是考察你工作的专业性,你是不是具有大型项目的工作经验.</p><p>一般好的,Java的编程工具,你比如说,Eclipse, netbeans, Intelli J 等等。</p><p>[局部变量和类变量的区别]</p><p>这个问题主要是考察选手对于scope的概念。回答这个问题,</p><p>就是局部变量是在方法里面定义的。这个变量只能在方法内部才可以被调用。</p><p>类变量呢,可以在类的内部,任何地方都可以被调用。类变量还可以添加一些修饰符,限制或者允许外部类调用。</p><p>[什么是继承? ]</p><p>继承就是说子类可以享有父类的一些定义。</p><p>[什么是封装?]</p><p>封装是通过类定义的方式,把一些方法和数据包裹起来。</p><p>[什么是多态?]</p><p>多态是指一个对象可以通过具体的引用类型来调用父类和子类的一些方法。</p><p>这三个问题主要是考察选手对于面向对象编程的概念。</p><p>[ Overriding 和 overloading的区别]</p><p>这两种方法在编程中会经常用到。被问的可能性非常大。</p><p>Overriding主要用在子类要使用父类的一些方法定义。方法名必须相同,方法参数必须相同, 返回值类型必须相同。使用这种方法, 子类既可以调用父类的方法也可以添加自己个性化的实现。</p><p>Overloading主要用在方法这一层次上。具有同样的方法名,不同的参数类型, 可能会返回不同的数据类型。</p><p>[接口和抽象的区别?]</p><p>这个问题在面向对象编程里面也是经常被问到的一个问题。</p><p>在Java中,无法实现多类继承,所以就引入了接口的概念。接口中,主要是类的声明,没有实现内容。</p><p>抽象类中至少要含有一个抽象方法。这个抽象方法只有声明没有实现。抽象类的非抽象方法,需要有实现内容。</p><p>[说一下访问修饰符]</p><p>这也是面向对象编程里面非常重要的一个概念。</p><p>private, protected, public。没有修饰符,就是default。</p><p>private只能在本类内部访问。</p><p>protected在本类和子类中访问。</p><p>public在其他类中都可访问。</p><p>default在包内可访问。</p><p>[数组和数组列表的区别?]</p><p>[String, StringBuilder, StringBuffer的区别? ]</p><p>string不可修改。</p><p>string builder可修改,线程不安全的。</p><p>string buffer可修改,线程安全的。</p><p>[HashMap, HashTable 的区别? ]</p><p>都是字典类型。</p><p>hash map 是线程不安全的。</p><p>hash table 是线程安全的。</p><p>[Set 相关的问题]</p><p>Set里面的数据是唯一的。</p><p>sorted set是可排序的。</p><p>[Queue 相关的问题]</p><p>priority queue先进先出。</p><p>[Map相关的问题]</p><p>有hash map, linked hash map, tree map. </p><p>[Tree相关的问题]</p><p>主要是二叉树, 搜索二叉树以及平衡二叉树。</p><p>二叉树是指只有左边和右边两个节点的结构。</p><p>搜索二叉树是指左边的节点永远比右边的节点小。</p><p>平衡二叉树是指左边的高度与右边的高度相差不超过1。</p><p>这是数据结构相关的问题。</p><p>[final相关的问题]</p><p>final分别用在变量,类和方法上意味着什么。</p><p>final用在类上,这样的类无法被继承。</p><p>final用在变量上, 这样的变量无法被修改。</p><p>final用在方法上,这样的方法无法被overriding。</p><p>[Exception相关的问题]</p><p>一共有几种exception?</p><p>out of index, io, illegal argument, etc.</p><p>他们的区别是什么?在什么时候用?</p><p>这样的exception很多。顾名思义,在对应的情况下使用对应的exception。</p><p>Runtime exception和compile exception有什么区别?</p><p>run time exception,是在运行过程中发生的exception。</p><p>compile exception,是指在程序编译的时候,报出来的exception。</p><p>[线程相关的问题]</p><p>什么是线程?</p><p>线程是进程的一个分支。</p><p>如何创建线程?</p><p>可以使用thread和 handler来创建线程。</p><p>如何在线程中间传输数据?</p><p>可以通过共享数据和线程变量。</p><p>解释一下yield, wait, notify, notifyAll, sleep</p><p>yield是把线程从运行状态,变为可运行状态。</p><p>wait是要求线程解锁并放弃运行状态,进入等待队列。</p><p>notify是用来从等待队列里面唤醒一个线程。</p><p>notifyAll是用来从等待队列里面唤醒所有线程。</p><p>sleep是暂停线程的执行。当前线程被唤醒后会进入可运行状态。</p><p>解释线程的生命状态。</p><p>线程的生命状态,新创建,可运行,正在运行,不可运行,终止。</p><p>如何实现线程的同步?线程同步有什么缺点?</p><p>通常使用synchronized 关键字来实现。缺点是降低了程序的执行效率。</p><p>Volatile是干什么用的?</p><p>这个关键字是用来在主内存上定义一个变量。而不是在线程的内存上。主要用来做数据的共享。</p><p>[序列化是怎么回事]</p><p>序列化是指把一个对象写入文件当中。反序列化是指从文件返回一个对象。</p><p>如何来做序列化和反序列化?</p><p>可以使用objectoutputstream写入和读取。</p><p>好了,这个问题先说这些,欢迎关注丁哥开讲,我们下次再见。</p><br/> [2023-10-04 11:39:16 | AI写代码神器 | 3918点数解答]

相关提问