`
yehuijia
  • 浏览: 9556 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

面试小结1

阅读更多
  最近参加了几次面试,发现公司的笔试题目有一些相似之处,就总结一下:


一般会从下面几个方面考,不管是面试C++,C#,java都是

首先是关于关键字和标示常量的考察

然后是关于类和接口的试题

然后是关于array,io和socket的试题

然后是关于数据库的各种sql语句的考察

然后是排序,包括快速排序,插入排序,选择排序

然后是设计模式的考察

一下以java为例子说明一些自己遇到的:


访问控制:

private 私有的

protected 受保护的

public 公共的




类、方法和变量修饰符

abstract 声明抽象

class 类

extends 扩允,继承

final 终极,不可改变的

implements实现

interface 接口

native 本地

new 新,创建

static 静态

strictfp 严格,精准

synchronized 线程,同步

transient 短暂

volatile 易失




程序控制语句

break 跳出循环

continue 继续

return 返回

do 运行

while 循环

if 如果

else 反之

for 循环

instanceof 实例

switch 开关

case 返回开关里的结果

default 默认

错误处理

catch 处理异常

finally 有没有异常都执行

throw 抛出一个异常对象

throws 声明一个异常可能被抛出

try 捕获异常




包相关

import 引入

package 包




基本类型

boolean 布尔型

byte 字节型

char 字符型

double 双精度,

float 浮点

int 整型

long 长整型

short 短整型

null 空

true 真

false 假

变量引用

super 父类,超类

this 本类

void 无返回值

无const 和 goto, 不过这两个词是保留字而不是关键词。保留字是系统保留起来不给用户使用,系统自己也不会用

无friendly和sizeof哦!!!

标识符变量,类与方法都需要一定的名称,我们将这种名称叫做标识符.java中对标识符有一定的限制.首先:所有的标识符的首字符必须是字母(大小写).下划线_或美元符$;其次标示符是由数字(0--9),所有从a--z的大写字母.a--z的小写字母与下划线_.美元符$与所有在十六进制0xc0前的 ascii码等构成;第三注意表示符不能使用系统保留的关键字做标示符.

Java关键字this、super使用总结

一、this

        Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。下面给出一个使用this的综合实例,以便说明问题:

package org.leizhimin;

public class Test6 {

private int number;

private String username;

private String password;

private int x = 100;

public Test6(int n) {

  number = n;  // 这个还可以写为: this.number=n;

}

public Test6(int i, String username, String password) {

  // 成员变量和参数同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.

  this.username = username;

  this.password = password;

}

// 默认不带参数的构造方法

public Test6() {

  this(0, "未知", "空"); // 通过this调用另一个构造方法

}

public Test6(String name) {

  this(1, name, "空"); // 通过this调用另一个构造方法

}

public static void main(String args[]) {

  Test6 t1 = new Test6();

  Test6 t2 = new Test6("游客");

  t1.outinfo(t1);

  t2.outinfo(t2);

}

private void outinfo(Test6 t) {

  System.out.println("-----------");

  System.out.println(t.number);

  System.out.println(t.username);

  System.out.println(t.password);

  f(); // 这个可以写为: this.f();

}

private void f() {

  // 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.

  int x;

  x = this.x++;

  System.out.println(x);

  System.out.println(this.x);

}

  //返回当前实例的引用

private Test6 getSelf() {

  return this;

}

}

运行结果如下:

-----------

0

未知



100

101

-----------

0

游客



100

101

         看着上面的例子,说明在什么情况下需要用到this:

        第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。

        第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.

成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵

        第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。

        其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易

搞错,要理解!

二、super

         super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员

方法。

不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。下面是一个综合运用

super的例子,有两个类:一个Father类,一个Father类的子类Son,通过这两个类完全演示了super的用法,一下是代码:

package org.leizhimin;

public class Father {

public String v="Father";

public String x="输出了Father类的public成员变量x!!!";



public Father() {

  System.out.println("Father构造方法被调用!");

}

public Father(String v){

  this.v="Father类的带参数构造方法!运行了.";

}

public void outinfo(){

  System.out.println("Father的outinfo方法被调用");

}

public static void main(String[] args) {

  // TODO 自动生成方法存根

}

}

package org.leizhimin;

public class Son extends Father{

public String v="Son";

public Son() {

  super();      //调用超类的构造方法,只能放到第一行.

  System.out.println("Son无参数构造方法被调用!");

  //super();      //错误的,必须放到构造方法体的最前面.

}

  public Son(String str){

  super(str);

  System.out.println("Son带参数构造方法被调用!");

}

//覆盖了超类成员方法outinfo()

public void outinfo(){

  System.out.println("Son的outinfo()方法被调用");

}

  public void test(){

    String v="哈哈哈哈!";   //局部变量v覆盖了成员变量v和超类变量v

    System.out.println("------1-----");

  System.out.println(v);   //输出局部变量v

  System.out.println(this.v);  //输出(子类)成员变量v

  System.out.println(super.v); //输出超类成员变量v

    System.out.println("------2-----");

  System.out.println(x);   //输出超类成员变量v,子类继承而来

  System.out.println(super.x); //输出超类成员变量v

    System.out.println("------3-----");

  outinfo();   //调用子类的outinfo()方法

  this.outinfo();  //调用子类的outinfo()方法

  super.outinfo(); //调用父类的outinfo()方法

}

  public static void main(String[] args) {

  new Son().test();

   }

}

子类Son运行结果:

Father构造方法被调用!

Son无参数构造方法被调用!

------1-----

哈哈哈哈!

Son

Father

------2-----

输出了Father类的public成员变量x!!!

输出了Father类的public成员变量x!!!

------3-----

Son的outinfo()方法被调用

Son的outinfo()方法被调用

Father的outinfo方法被调用



        说明:次例子仅仅为了说明super的用法,实际在设计类的时候一般都尽可能私有(private)化。

        通过上面的例子,下面总结一下super的用法:

        第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。

        第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。

        第三、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。
分享到:
评论

相关推荐

    零神模拟面试总结1

    "零神模拟面试总结1" 本资源主要是关于 Python 算法模拟面试的总结,涵盖了面试过程中常见的问题和解决方案。 知识点1:排序算法 在面试中,排序算法是非常重要的一部分。常见的排序算法有冒泡排序、快速排序、...

    面试录音&面试总结.zip

    【标题】:“面试录音&面试总结.zip”是一个包含面试过程记录和回顾的压缩文件,它可能包括了求职者与招聘方的对话音频以及面试后的个人反思和总结文档。这类文件对于求职者来说是宝贵的资源,可以帮助他们分析面试...

    2018秋招iOS面试总结

    1. **Objective-C与Swift基础**: - Objective-C:面试中常问的基础知识包括类、对象、继承、消息传递、协议等。Objective-C的动态性,如Category和KVC(Key-Value Coding)也是重点。 - Swift:Swift的语法特性如...

    java面试100题及面试技巧总结

    java面试100题及面试技巧总结,自己整理总结的java面试技巧及面试题。 java面试100题及面试技巧总结,自己整理总结的java面试技巧及面试题。 java面试100题及面试技巧总结,自己整理总结的java面试技巧及面试题。 ...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...

    苍穹外卖项目——面试问题总结.md

    苍穹外卖项目——面试问题总结.md

    10万字面试总结Java.pdf

    这份"10万字面试总结Java.pdf"涵盖了Java基础知识、JVM、Spring框架、并发编程、Linux、Dubbo、Mybatis、Springcloud、Spring Boot、消息队列和Zookeeper等多个核心主题,旨在帮助Java开发者全面准备面试。...

    《我想进大厂》面试总结.pdf

    在进行《我想进大厂》的面试总结时,我们首先要了解面试对于求职者和招聘方的重要性。面试不仅仅是一个考核和选择的过程,它也反映了求职者的职业素养、技术能力、沟通技巧和解决问题的能力。而对于面试官而言,面试...

    陈涛后端面试总结

    陈涛后端面试总结 这篇文章总结了数字IC后端的一些重要问题,涵盖了电源走线的选择、交替路由的应用、线间干扰的解决、标准单元延迟的影响因素、禁止使用库中某些单元、wire load model的类型、延迟模型的类型、...

    Java面试总结面试宝典.xmind

    Java面试总结面试宝典.xmind

    面试SQL经典总结

    "面试SQL经典总结"这个主题,通常涵盖了SQL的基础概念、常用查询语句、高级功能以及在实际面试中可能遇到的问题。下面,我们将深入探讨这些关键知识点。 1. SQL基础: - 数据库模型:了解关系型数据库的基本原理,...

    软件工程师 程序员10万字大厂应聘面试总结java面试题和答案.pdf

    本文档是关于软件工程师程序员Java面试题和答案的总结,涵盖了Java语言的特点、面向对象和面向过程的区别、基本数据类型、标识符的命名规则、instanceof关键字的作用、Java自动装箱与拆箱等知识点。 一、Java语言的...

    大数据面试复习总结

    大数据面试复习---Java基础---集合类、多线程、JVM 大数据面试复习----常问问题分析 ...大数据面试复习----人事面试常问的问题总结 大数据面试复习----数据结构和算法+其他 大数据面试复习---项目架构流图串讲

    2020年上海JAVA开发工程师面试总结

    2020年上海JAVA开发工程师面试总结

    阿里巴巴面试总结DOC版

    阿里巴巴面试总结DOC版 本资源摘要信息主要总结了阿里巴巴面试中的问题和答案,涵盖了 Java 编程语言、设计模式、JVM 内存模型、ClassLoader 结构、UML 模型图、OSGi 框架、Spring 框架、iBatis 框架、Java 序列化...

    Java面试题总结

    Java作为一门广泛应用于后端开发的语言,其面试题涵盖了众多的知识点,包括但不限于基础语法、数据结构、算法、多线程、并发编程、...希望这份"Java面试题总结"能帮助你在面试中展现出最佳状态,祝你找到满意的工作。

    java面试问题总结

    (实际面试题) 1.在执行速度方面的比较:StringBuilder 快于 StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的...

    2018 面试的题目总结

    2018 各大主流的面试题的总结集合. iOS iOS iOSiOSiOS

    创迹面试总结.doc

    1. **项目经验**:面试官会询问你参与过的项目,以此了解你的实际操作能力和团队协作精神。你应该详细介绍项目内容、所用技术以及你在团队中的角色,展现你的实际工作经验。 2. **校园经历**:面试官可能会询问你...

    net面试题全面总结

    1. **基础语法**:这是.NET面试的基础部分,包括C#或VB.NET的基本语法,如变量、常量、数据类型、运算符、控制结构(如if-else、switch、循环)、函数、类、接口、委托等。 2. **面向对象编程**:面试者需要深入...

Global site tag (gtag.js) - Google Analytics