面试的角度诠释 Java 工程师(一)(上)

来源:locality,

http://www.jianshu.com/p/a0b8b6f17888

前言:

我相信每一个程序员都是为了生活而努力着的。很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥;也有很多人因为梦想和执着,奋不顾身融入这个职业;还有很多人因为被现实逼得太无奈,不得不为自己、为家人、为未来谋这么一条坎坷的路。

这里,我不去评价什么,再说我也没有资格去评价啊。言归正传,下面我写这篇文章的定位是各位在场的读者,如果你认为我接下来说的内容会跟书里说的差不多,那么请高抬贵脚移步它处,但是我相信你绝对不会这样觉得的。不知道作为程序员的你们,是否还在抱着面试或者笔试题复习呢?是否还在抱着各种面试书乱翻呢?

我只说一点,面试的目的不是让考官知道你怎么样,而是让你自己清楚自己怎么样。也就是说你会什么、能够做什么!举个例子,如果你去面试Java工程师,你至少要会该职位的职能,而不是只会面面试、做做笔试题。所以,这就是我写这篇文章的初衷!

一、基础篇

1.面向对象的三大特性

继承、封装、多态

什么是继承?

①继承是面向对象程序设计能够提高软件开发效率的重要原因之一。

②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷。

③继承来的属性和方法是隐式的,也就是在本类里面是看不见的。

④一个类只能有一个父类,也就是类只能是单继承。

⑤一个接口可以有多个父类,也就是接口可以是多继承。

实际项目开发中,一个类继承于另一个类,那么前者就是后者的子类,反则反之。

什么是封装?

对象数据和操作该对象的指令都是对象自身的一部分,能够实现尽可能对外部隐藏数据。

实际项目开发中,使用封装最多的就是实体类,常常和JavaBean(类必须是具体的和公共的,并且具有无参数的构造器)一起使用。

那么,实体类有那些东西呢?

答:私有的成员变量、无参数的构造器、有参数的构造器、setter和getters方法、重写tostring方法、重写hashCode和equals方法。

什么是多态?

①多态就是对象拥有多种形态:引用多态和方法多态。

②引用多态:父类的引用可以指向本类对象、父类的引用可以指向子类的对象。

③方法多态:创建本类对象时,调用的方法为本类的方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法。

④存在多态的必要条件:继承、重写。

⑤多态的作用是消除类型之间的耦合关系。

在实际项目开发中,A类继承B类,如果在A类中不重写B类的方法的时候,输出的仍旧是B类方法里面的信息(B b=new A());如果在A类中重写B类的方法的时候,输出的是A类方法里面的信息(B b=new A())。

2.Java集合框架树

Collection接口:它是Java集合框架的一个根接口,也是List、Set和Queue接口的父接口。同时它定义了可用于操作List、Set和Queue的方法—增删改查。

Map接口:它提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的。Map接口有一个重要的实现类HashMap。

①在Map接口中的键值对是以Entry类型的对象实例形式存在。

②在Map接口中键值(Key值)是不可以重复的,value值却可以重复,也就是存在多对一的关系。

③在Map接口中提供了分别返回Key值的集合、value值的集合以及Entry集合的方法。

④Map支持泛型,同时Key值和value值都是可以为null的。

⑤在HashMap中的Entry对象是无序排序的,这点特性和List接口是相反的。

⑥在HashMap中有且只能有一个Key值为null的映射。(注:key值是不能重复的)

List接口:List接口有一个重要的实现类ArrayList(数组序列)。

①List是元素有序并且可以重复的集合。

②List可以精确的控制每个元素的插入位置,或删除某个元素的位置。

Comparator接口:临时的比较规则。如果某一个类要实现这个接口,那必然要实现它的Compare()方法。

Comparable接口:默认的比较规则。当实现了这个接口,则表示这个类的实例可以比较大小,可以进行自然排序。如果某一个类要实现这个接口,那必然要实现它的CompareTo()方法。

3.Java中的IO流

字节流:

//一个字节一个字节的读写

FileInputStream in=new FileInputStream("源文件");

FileOutputStream out=new FileOutputStream("目标文件");

......

in.close();

out.close();

首先要记住,一旦使用了IO流最后一定要记得关闭,这是常识。

//利用缓冲区,高效的读取字节

BufferedInputStream in=new BufferedInputStream(new FileInputStream("源文件");

BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("目标文件");

......

in.close();

out.close();

字符流:

InputStreamReader isr=new InputStreamReader(new FileInputStream("源文件路径"),"设置编码");

OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("目标文件路径"),"设置编码");

......

osw.close();

isr.close();

也可以这样写:

FileReader fr=new FileReader("源文件路径");

FileWriter fw=new FileWriter("目标文件路径");

......

fr.close();

fw.close();

//利用缓冲区,高效的读取字符

BufferedReader br=new BufferedReader(new FileReade("源文件路径");

PrintWriter pw=new PrintWriter("目标文件路径");

......

br.close();

pw.close();

序列化和反序列化:

//对象的序列化

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file));

这里的file指的是String file="文件在项目中的路径";

//对象的反序列化

ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));

4.Java的Socket通信(多线程)

思路:

①首先创建服务器端Socket,指定并侦听某一个端口,然后循环监听开始等待客户端的连接….

②创建客户端socket,指定服务器地址和端口,然后获取输出流,向服务器端发送请求,并关闭socket输出流。

③服务端接收到客户端的请求后,创建新线程并启动。

④创建线程处理类,执行线程操作,获取输入流,服务端读取客户端用户详情,关闭资源。

⑤执行线程操作,获取输出流,响应客户端请求,客户端接受到服务端的响应,关闭资源。

简单点讲,就相当于我跟你说话(客户端→服务端),你收到我说的话(服务端→线程处理类),大脑进行思考后(线程处理类),做出回答我的话(线程处理类→客户端)。

5.关系型数据库

数据库的三范式:

①字段不可分。

②有主键,非主键字段依赖主键。

③非主键字段不能互相依赖。

T-SQL:

在整个数据库中,查询操作占据增删改查的80%,而说到查询,T-SQL语句自然不能少。如图上示。

增:

①插入单行

insert into <表名> (列名) values (列值)

②将现有的表数据添加到一个已有表

insert into <已有的新表> (列名) select <源表列名> from <源表名>

③直接拿现有表数据创建一个新表并填充

select <新建表列名> into <新建表名> from <源表名>

删:

①删除满足条件的行

delete from <表名> where <删除条件>

②删除整个表

truncate table <表名>

注:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能用语有外建约束引用的表。

改:

①更新

update <表名> set <列名=更新值> where <更新条件>

子查询:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

其中:

①SELECT * FROM t1 …称为外查询。

②SELECT column1 FROM t2 称为子查询。

所以,我们就说子查询是嵌套在外查询内部的。而事实上它也有可能在子查询内部再嵌套一个或者多个子查询。这里要注意,子查询必须出现在圆括号之间哦。

时间: 2024-11-25 12:52:11

面试的角度诠释 Java 工程师(一)(上)的相关文章

面试的角度诠释Java工程师

原文出处: locality 一.基础篇 1.面向对象的三大特性 继承.封装.多态 什么是继承?①继承是面向对象程序设计能够提高软件开发效率的重要原因之一.②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷.③继承来的属性和方法是隐式的,也就是在本类里面是看不见的.④一个类只能有一个父类,也就是类只能是单继承.⑤一个接口可以有多个父类,也就是接口可以是多继承.实际项目开发中,一个类继承于另一个类,那么前者就是后者的子类,反则反之. 什么是封装?对象数据和操作该对象的指令都是对象自身

哪些问题是面试官经常问Java工程师的问题 ? --- 转自quora

Which are the frequently asked interview questions for Java Engineers ? Vivek Vermani, www.buggybread.com | Programme... (more) 265 upvotes by Ridox Liu, Shivani Sahni Vermani, Viet Thang, (more) Java的基础知识   For a Core Java Developer , Questions arou

以Java工程师为例,技术面试应该怎么准备?

如何准备一份「工程师范儿」的简历? 定制简历 我自己的经验是,每个岗位的具体要求都不同,因此大家不要用一个通用的简历去应付所有的岗位,最好是根据特定公司的特定岗位来定制简历.当然这并不是让大家编故事,而是突出与目标岗位匹配的经验和能力.大家去应聘一个开发或者测试工程师,和去应聘一个 Team Leader 或者技术经理的角色是完全不一样的.比如,如果我要去应聘一个有管理性质的岗位,我就会在简历里适当突出我曾经从 0 组建了一个 10 人的技术团队,里边有多少资深 Java 开发工程师,多少数据库

美资软件公司JAVA工程师电话面试题目

面试必备基础题目(虽然不一定常用, 仅用于面试, 面试就是把人搞的都不会然后砍价, 当然您可以讲我可以查资料完成, 但是面试的时候就是没道理的, 起码我是经常看到这些题). 如何把一段逗号分割的字符串转换成一个数组?request.getAttribute() 和 request.getParameter() 有何区别?response.sendRedirect() 和 forward() 区别?<%@include file="xxx.jsp"%>和 <jsp:in

Java工程师必备书单

Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要感谢一下江南白衣大大的后端书架,让我在初学阶段读到了很多好书,直到现在都印象深刻. 我在两年的学习历程中看了很多的书,其中不乏XXX入门到精通,XXX王者归来,XXX指南什么的. 虽然这类书确实毛病很多,但是作为非科班的我来说,当时还是看的津津有味.直到后来我看到一些优秀的书籍,以及白衣哥的书架,我

【转】Java工程师必备书单

江湖路险,你我同行. Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要感谢一下江南白衣大大的后端书架,让我在初学阶段读到了很多好书,直到现在都印象深刻. 我在两年的学习历程中看了很多的书,其中不乏XXX入门到精通,XXX王者归来,XXX指南什么的. 虽然这类书确实毛病很多,但是作为非科班的我来说,当时还是看的津津有味.直到后来我看到一些优秀的书籍

(java web后端方向)如何让你的简历为你争取到更多的面试机会,内容来自java web轻量级开发面试教程

我们在做培训时,会发现一个不合理的情况,一些程序员能力不错,在公司里也是技术牛人,但发出去的简历往往会石沉大海,没有回复.对于刚毕业的大学生或工作年限在2年之内的程序员,这个情况会更严重. 这种情况下,其实不是你的能力有问题,而是简历筛选人(往往是人事或技术面试官)无法从简历上看出你很牛,或者即使能从简历上感觉到你能力很强,但会感觉到你的能力和公司的需求不匹配.不管是哪种情况,结果都一个,你甚至得不到技术面试的机会. 笔者在这里,将根据面试多个候选人(至今有100以上)的经验,来向大家展示准备简

Java工程师笔试题整理[校招篇]

隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打好Java基础:如何一步一步的学Java - 学习编程 - 知乎专栏.然后再来看一下练习一下各大厂的面试笔试题目. 如果以下内容满足不了你,你还可以去看这篇: 2016校招编程题汇总 - 学习编程 - 知乎专栏 进入主要内容(主要内容整理来自牛客网:牛客网)(以下内容按照各大公司进行划分,对每一公司按照年份进行划分,如果想想下载以下内容,可以

如何做好Java工程师职业规划?粤嵌来解答

it行业以其巨大的发展空间和高薪待遇吸引着越来越多的年轻人加入.但是,如今的情况是:一方面,很多高校的计算机相关专业的毕业生感到就业压力巨大.求职面试四处碰壁:而另一方面,众多的IT企业却为难以找到合适的IT人才伤透脑筋.那么大学毕业生如果想成为一名Java工程师,该如何给自己的职业定位,为自己的就业做好铺垫呢?粤嵌为你解答. 现在有不少在校大学生对自身缺乏良好的职业定位,没能对自己将来的职业发展有清晰的规划,导致毕业求职的准备不够充分,这也是很多高校毕业生找不到理想工作的重要原因.目前IT业人