基础面试题20-2017年11月26日

1.[不定项选择题]
(1)以下命名合法的是:(BC)  A.Hello.Worl B.$ABC C.$A$B$C D.2Hello 
2.[简答题]
(1)java中有哪几种修饰符作用是什么?
   default 默认 同包
   private 私有的 本类中使用
   public 公共的 任何地方都可以使用
   protected 受保护  同包 或者 父子
(2)oop的三大特征是什么?
   封装 继承 多态
(3)重写(override)和重载(overload)的区别是什么?
方法重载(overload)特征:
                本类中
                方法名相同
                参数列表不同[参数的顺序 或者参数的个数 或者 参数的类型]
                不以返回值区分
重写特点: 
                发生在父子之间
                签名相同 
                特殊1:修饰符一定要大于等于 父类的方法的修饰符
                特殊2:异常一定是小于等于 父类的方法的异常
                特殊3:方法的参数类型一定是小于等于 父类的方法返回值
(4)ctor特点是什么?
构造函数(ctor)特征: 
                一般情况下修饰符是public
                没有返回值,没有void
                与类同名
                可以重载
                在一个类中,如果程序员没有写构造函数,那么系统会给一个无参数的构造函数
(5)接口和抽象类的异同点?
  共同点: 不允许实例化
  不同点: 接口可以继承接口,可以多继承. IA extends IB ,IC ,ID
          抽象类只能实现接口implement,只能继承类extends. A extends B implement IA ,IB 
   
(6)final finally finalize 区别?
finally =>异常块
final =>常量关键字.
finalize =>1.这个方法是Object类中的方法 2.这个方法是在垃圾回收之前运行的,做清理工作的.
(7)你常用的集合有哪些以及区别?
  Collection =>Set  =>HashSet[不允许重复,无序] TreeSet[不允许重复,自动排序]
               List => ArrayList 数组结构 线程不安全 R
                      Vector 数据结构 线程安全
                      LinkedList   链表结构  线程不安全 CUD 


  Map => HashMap 数据 + 链表 . 线程不安全
         HashTable 数据 + 链表. 线程安全.
         Properties 属性文件. key value 


(8)HashSet的去重原理是什么?
  hashcode + equals
(9)TreeSet的比较原理是什么?
  Comparator Comparable
(10)写出工作中常见的五个异常信息.
java.lang.ArrayIndexOutOfBoundsException  下标越界异常
java.lang.NumberFormatException  数字格式化异常
java.lang.ClassCastException 类型转换异常
java.lang.NullPointerException 空指针异常
ClassNotFoundException 类找不到异常


(11)TCP/IP 和 UDP/IP 分别是什么意思?
TCP/IP 三次握手协议,即面向连接的.
UDP/IP 类似于写信,即非连接协议.


(12)java中有几种方式实现多线程,你更喜欢哪一种?为什么?
Thread 和  Runnable .
Runnable更好.
因为JAVA中的继承是单继承的,如果你已经继承了Thread就不能再继承其他的类,如果你实现了Runnable接口,可以实现多继承.


(13)wait  和 sleep区别?
1.wait必须在synchronized块中.
2.wait方法是将自己线程等待,并且释放锁.
3.sleep可以在任何地方使用
4.如果sleep在synchronized中,就算是睡着了,也不释放锁. sleep(1000)


(14)同步块的单词是__synchronized _______?


(15)如何解决资源竞争问题?



(16)你在工作中最常用的是哪几种索引? 请创建
单列索引和组合索引.
CREATE INDEX i_ab
ON a(name)
CREATE INDEX i_ab
ON a(name,starttime)


(17)你在工作中什么地方会使用视图?请创建一个查询视图.
N多表连查,并且多人使用的时候.
CREATE VIEW v_ab
AS
SELECT * FROM A,B


(18)请把测试服务器(a.b.c)中的数据库(apply)拉到本地.
mysqldump -h a.b.c -u root -p apply > D:\apply.sql


(19)float f=3.4;是否正确? 不正确,默认小数都是double类型的
   short s1 = 1; s1 = s1 + 1;有错吗?不正确,整数默认是int类型的.所以1是int类型的.
   short s1 = 1; s1 += 1;有错吗?正确.


(20)String 是最基本的数据类型吗?不是
   索引的类型是什么? btree


(21)ctor 可以被重写吗? 不可以
   String类可以被继承吗? 不可以


3.编码题
(1)1 1 2 3 5 8 ...显示第20位的数字,请编写核心代码
        int a = 1;
        int b = 1;
        int c = 0;
        for(int i =2 ;i <20;i++){
            c = a + b;
            b = a;
            a = c;
        }
        System.out.print(c+"\t");
(2)写一个冒泡排序
for(int i = 0;i < arr.length - 1;i++){
    for(int j = 0; j < arr.length - 1 - i; j++){
    }
}
(3)模拟写一个死锁,请编写核心代码
class Lock{
    private static Object objA = new Object();
    private  static Object objB = new Object();


    public void funA(){
        synchronized (objA){
            System.out.println("funA objA 已拿到");
            try {
                Thread.sleep(1000);
            }catch (Exception ex){


            }
            synchronized (objB){
                System.out.println("funA objB 已拿到");
            }
        }
    }
    public void funB(){
        synchronized (objB){
            System.out.println("funB objB 已拿到");
            try {
                Thread.sleep(1000);
            }catch (Exception ex){


            }
            synchronized (objA){
                System.out.println("funB objA 已拿到");
            }
        }
    }
}
(4)请写一段代码,返回一个100以内的随机数字.
   int random = (int)(Math.random()*100);


(5)请编写核心代码: 实现两个list的数据合并.
addAll()


(6)实现一个1 + 2 - 3 + 4 - 5....100的结果.
        int sum = 0;
        for(int i =0;i<100;i++){
            if(i % 2 == 0){
                sum += i;
            } else{
            sum -= i;
            }
        }
(7)修改表中的字段addr,修改为varchar(200).
ALTER TABLE t1 CHANGE addr addr VARCHAR(200)


(8)添加一个字段memo,类型为varchar(200).
ALTER TABLE t1 ADD memo VARCHAR(200)


(9)
需求:


[9.1]建立一个公司数据库(gongsi)
CREATE DATABASE gongsi


[9.2]建立一张部门表(部门编号b_id,部门名称b_name) ,   其中b_id为主键,自增长,b_name不允许为空
CREATE TABLE bm (
b_id INT PRIMARY KEY AUTO_INCREMENT,
bname VARCHAR(10) NOT NULL
)


[9.3]建立一张员工表(员工编号y_id,姓名y_name,性别y_sex,年龄y_age,住址y_address,部门编号b_id), 其中y_id为主键自增长。  住址默认为’不详’ ,b_id依赖于部门表的b_id。
CREATE TABLE yg (
y_id INT PRIMARY KEY AUTO_INCREMENT,
y_name VARCHAR(20),
y_sex VARCHAR(10),
y_age INT,
y_address VARCHAR(100) DEFAULT '不详',
b_id INT
)


ALTER TABLE yg
ADD CONSTRAINT FK_yg_b_id FOREIGN KEY (b_id) REFERENCES bm(b_id)


[9.4]查询每个部门各有多少人,显示部门名字和人数,按人数倒序,如果人数相同,按部门编号正序。 


SELECT COUNT(*),bm.b_name FROM yg LEFT JOIN bm ON yg.b_id = bm.b_id  GROUP BY b_id ORDER BY COUNT(*) DESC ,bm.b_id ASC



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值