前言
虽然我已经被华硕研发中心录用,只等将三方协议交给华硕了,但是我还是一个闲不住的人,在学习java的过程中,我还去了诚迈面试,当时只是去试试,看看这些外包公司到底是咋么样的?需要我们这些本科生具备什么样的能力,然后在我完成了他们的笔试题以后,然后参加了他们的面试,面试官可能是临时拉过来面试的吧~~老感觉他不太乐意~~~然后面试官开始问我各种问题,什么多态,什么安卓的源码你有没有看过~~~基本我是被问倒了,要知道我也是刚刚开始自学java和安卓的人啊,你问我这个,让我如何跟你说详细呢?然后他看我写的简历,说你是咋么统计代码量,知道什么是代码量不?我就说按我的理解就是我写的代码啊~他是公司一个人一天有效代码最多就500行,你拿出这样的简历也不怕别人笑话,好吧,面试官果然是大神,不过先工作的面试官,如果我也是工作了几年的人当然也不会犯这样的错误是吗?做人,我总是觉得应该留点后路,对吗?万一以后我们是同事呢?不过,我十分感谢你,让我看到了自己足够的不足,我开始反思自己了,面试官指出你既然知道sqlit3的使用,就该知道这个数据库是咋么实现,是的,我在这里学到了一点,那就是我真的没有深入地去理解我自己所学的东西,应该更加深入地学习,不是吗?
当时我可能在拿到华硕的offer以后就开始松懈了,这点必须承认,因为我发现我脑海里面已经没有像开始那样地可以用很专业的术语来解释我的理解了,我只有用我自己的言语来解释我的理解,诚然,开始是有点背书的嫌疑吧,不过我还是喜欢去自己慢慢理解,于是我忘记了许多的术语,就剩下一些自己的理解了!
面向对象基础
不得不说,面向对象是我们现在最主流的编程语言了,相对于面向过程的C语言有太多的优势了,面向对象有3大特点,这是经常被考的一个面试题吧,当然我是指技术面哦!当然最受不了的就是面试官故意把我们经常忽视的一个特点挑出来问我们了--抽象,这个是来自C++的一个特性吧,我对C++不是很熟,但是在JAVA和C#中很少会提及这个特点。
当时我就被问到了什么是抽象,我是这样答的:我们写的代码就是把具体的有共同特点的特性取出来,抽象成一个类! 后来我也查了资料,别人是这样说的:
1、面向对象本身来说是一种抽象能力。
2、数据结构,算法针对机器来抽象。
3、面向对象针对人来抽象。
{
抽象:
抽象类定义:不能被实例化的类
抽象方法:方法的实现由子类决定,在父类中我们将该方法声明为抽象方法
关键字:abstract
如果将一个方法声明为抽象方法只有两个结果:
1,类也必须声明为抽象类,如果一个类包含了抽象方法,那么该类也必须是抽象的。
2,任何子类必须重写抽象方法,除非子类本身也是抽象的
}
下面介绍三大特点:
(1)继承:
我的理解:两个类具备一些相同的特性,子类可以有父类的特性,而子类也可以有自己的特性方法这就区别于父类了!(我的想象就是儿子可以继承老子的财产,但儿子也可以自己创造财富,这世界上还没有父亲继承儿子的财产的情况吧~~~)
术语:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增 加新的方法使之更适合特殊的需要。
(2)封装:
我的理解:封装,就是封装啊,把一些你不想暴露给被人看到的东西进行封装,不给其他人直接使用,防止出现错误,要修改的话必须通过get\set函数(我不知道我这样理解是否对,但是面试官觉得我就懂些皮毛,开始问我什么基类的作用~~,好吧,我这个真的没去研究,貌似又是C++的内容,看来我得好好看看C++了)
术语:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
(3)多态:
我的理解:其实在做项目中,我用的最少的就是多态,除了arraylist<string>等,我真的不太清楚它是用来干什么的?我理解为类或者是对象的多种状态!面试官从我口中就知道我对这方面没有太多经验,特意让我写一个多态的使用,List<String> = new ArrayList<String>(),当时我脑子是一片空白,不知道我应该如何写的,于是瞎写,他问我知道为什么用list去接不?有什么作用?表示我真的不清楚。至今我还是不太理解多态的真正意图,知道它可以加强代码的扩展性~~
术语:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
JAVA入门
下面我将介绍java的一些入门性的知识,也是作为我自己在学习过程中的笔记好了,不过我的更新可能比较慢,因为我自己也在研究ARM9的,没有很多时间来进行完整的整理,我只是拎出一部分我认为自己在学习中碰到的一些重点提炼出来给大家,我觉得我写的东西应该适合那些有点基础的人吧~~
首先,我在面对bool变量的时候,java中是boolean这是与C不一样的地方,数组方面的话 int [] a = new int [] {1,2,3,4},申明和初始化也与C有很大的差别哦!然后那些控制流、循环等,我就不再一一说了,这个真的是万变不离其中!
好了,我今天就写到这里了,找时间我继续写,坚持写出一系列来,同时我也希望大家关注我的微博哦!
MSP王宁斌ASUS
当然也可以发邮箱与我进行联系:[email protected]