—— 线程编程、数据库理论和Jdbc部分内容 ——

    数据库的开发应用想必是我们日常所碰到最多的知识点了,大致可分为:oracle、MySQL、SQL Server、Hadoop、

NoSQL、云计算等主流数据库,但随着科技水平的进步和日益紧张的技术追分,人们的节奏逐渐的走向大数据处理的当今时代,Hadoop和NoSQL等大数据的应用已经成为大企业从业人员必备的专业知识之一,Big Data的储备已必不可少。

本章主要分析 : 线程编程  、 数据库理论知识  和 JDBC 的简要内容

每天学一点,日积月累,四个月后的今天,你一定会有很大的收获!

全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见:

基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常、静态、抽象、接口、集合等);

深入理解部分     ★★★★: 重点掌握的面向对象的理论知识(对象、排序、字节字符流);

线程编程部分     ★★★★★:单独讲解线程概念、同异步实现方法及关系、线程锁等;

数据库理论归纳   ★★★★: 总结PL/SQL语句,使用方法,归纳基本公式,深层次内容有待开发。

JDBC和XML部分   ★★★  : 重点分析XML的技术构成、应用方面的形式和区别。

Servlet   部分   ★★★★★:重点掌握生命周期和会话跟踪技术的知识点和一般的实现方法。

J S P    部分   ★★★★ : 对象、动作的分类和区别,跳转方法以及动静态include的区别。

JAVA笔试逻辑题  ★★    : 逻辑题目的考验,目前企业应用也比较广泛,稍微了解下。

线程编程方面:

1sleep()  wait() 有什么区别★★
答:

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,

到时后会自动恢复。

调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,

只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

2、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
答:

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,

那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,

在很多情况下采用异步途径往往更有效率。

3、启动一个线程是用run()还是start()?★★★
答:

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。

这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

4、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答:不能,一个对象的一个synchronized方法只能由一个线程访问。

5、请说出你所知道的线程同步的方法。
答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
    sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,

调用此方法要捕捉InterruptedException异常。
    notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,

并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,且不是按优先级。
    Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么
答:

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 。
同步的实现方面有两种,分别是synchronized,wait与notify 。

7、线程的基本概念、线程的基本状态以及状态之间的关系★★★★
答:

线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。
Java中的线程有五种状态分别是:创建、运行、就绪、阻塞、结束。

8、简述synchronizedjava.util.concurrent.locks.Lock的异同 
答:

主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,

而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

9、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

答:有两种实现方法,分别是继承Thread类与实现Runnable接口;

用synchronized关键字修饰同步方法; 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在;

数据库理论归纳:

执行顺序:

  select... from... where... group by... having ...order by...的执行顺序
(from)(where)(group by)(having)(select)(order by) 增、删、改、建 :
建:create table tabname(col1 , col2 ...);
增:insert into tabname values (values);
改:update tabname set colname = values , colname = values where colname = values;
    (注意,修改多列值的时候,要用 逗号 隔开,不可以用 and 连接)
删:delete from tabname where condition ...
    delete tabname . 日期函数转换:to_char    数值转换字符
              to_number 字符转换数值
              to_date 转换日期格式 非关联子查询: select ... from ...where ..in + (select语句 如:select id from account where ...);
关联子查询 : select ... from ...where ...exists + (select语句 如:select 1 from account where ...);
交叉连接 : cross join 每个记录相互连接得出匹配和不匹配问题
内连接 : (inner) join 解决匹配问题。
外连接 : (outer) join 解决不匹配问题。
拓展-> 左连接 右连接 : left join ; right join 区分匹配表、驱动表的关系 集合运算符: union/ union all 并集 (集合不重复/集合存在重复)           
              intersect 交集 (取两个表共同存在的集合元素)
              minus 差值 (一个表是另一个表的子集)
排名分页 : rownum 解决对结果集进行编号排列
              (rowid) 通常和 index 索引 相提
约束(constraint): 主键 : primary key 约束名可不写,不可为null和重复值
                   唯一键:unique key 理解联合唯一与联合主键的写法, 可为null值                                                                         
外键 :references ...(表级约束) 列级约束:foreign key ... references ...
检查 :check 理解联合检查的写法
非空 :not null 只有列级约束的形式 事务: transaction
数据定义语言: Data Definition Language
数据操作语言: Data Manipulation Language
事务控制语言: Transaction Control Language
数据查询语言: Data Query Language
数据控制语言: Data Control Language on delete cascade 级联删除
on delete set null 删除值 置空

视图 

创建: create or replace view  view_name as/is + select 语句

视图恢复:alter view view_name compile

删除: drop view view_name

with check option  检查插入记录是否符合where条件

with read only     只能查询,不能做DML操作

索引 :  create index ind_name on tabname(colname...).

对视图可以做 desc 和 select 操作 ,对索引则不可以。

序列号:  create sequence seq_name

start with ...起始值 increment by ...递增规则

maxvalue ...循环最大值  minvalue ...循环最小值

cycle..循环  cache 20 数据缓冲数.

序列号循环的最后一个: select seq_name.currval from dual.

查询的下一个 :     select seq_name.nextval from dual.

事务: ★★★★

四个特性:atomic(原子性)  consitent(一致性)  insulation(隔离性)  duration(持久性)

理解 :commit 提交     rollback 回滚      savepoint 保留点

PL/SQL

打印格式: dbms_output.put_line(一个参数,类型为 字符);

set serveroutput on (在一个session里有效,重新连接需要重新设置)

数据库上的并发连接

统计server process (username) 的个数

1、 ps -ef|grep username|wc -l   (在telnet/oracle环境下运行)

2、select count(*) from v$session where username is null. (在SQL环境下执行)

PL/SQL 书写格式★★★★

declare 变量声明

... ...

begin   执行部分

... ...

exception  异常处理

... ...

end;   结束块

理解  loop循环  if循环 while循环的写法

DDL语句 只能用本地动态SQL执行 execute immediate

DML语句 可静态写法和动态写法 (相对而言 静态写法效率更高)

游标 :   cursor cur_name is ...

书写处理: declare(声明游标)... open(打开游标)... fetch(提取游标)... 判断部分... close(关闭游标)

关联记录;  type type_name is record (... ...)

关联数组: type type_name is table of element_type<not null> index by <binary_integer / pls_integer / varchar2>

过程 procedure : 本身没有返回值 / 调用过程,一条语句

create or replace procedure XX...

函数 function :  本身有返回值 / 调用函数,写表达式

create or replace function XX... return values

包和包体 package / package body

create or replace package / package body XX...

异常部分: 预定义异常、非预定义异常 和 自定义异常

dbms_output.put_line(sqlcode) : 查询异常编号

dbms_output.put_line(sqlerrm) : 查询异常信息

在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 
答:一种分页方法

JDBC/XML知识:

mysql数据库使用命令:★★★

登录mysql数据库: mysql -uroot;

查询但前数据库信息: show databases;

创新新的数据库: create database 库名 default character set utf8;

使用数据库: use 库名;

注意: 必须要先敲 mysql -uroot 后 use 库名   方能执行接下来的命令,否则你会看到一系列的报错信息。

查看当前数据库存在的表: show tables;

建表 : create table (c1...auto_increment ,c2 ..., c3...) type = innodb;

(type = innodb 支持事务    auto_increment  自增长列)

查询表 : 用户和oracle一样  select * from  tabname ;

插入 :   用户和oracle一样  insert into tabname(c2..., c3...) values(... ...);

注:auto_increment 表明的列无须输入。

1、JDBC:如何控制事务?

A:  conn.setAutoCommit(false);

当值为false时,表示禁止自动提交。 在默认情况下,JDBC驱动程序会在每一个更新操作语句之后

自动添加commit语句,如果调用了setAutoCommit(false),则驱动程序不再添加commit语句了。

B:  conn.commit();  

  提交事务。即驱动程序会向数据库发送一个commit语句。

C:  conn.rollback();

回滚事务。即驱动程序会向数据库发送一个rollback语句。

2Class.forName的作用?如何使用jdbc的三个对象?
答:

调用该访问返回一个以字符串指定类名的类的对象。

Connection: 负责建立连接,获得连接.(java程序与数据库之间的连接) 
Statement:负责发送sql给数据库,创建statement.(子接口:preparedStatement)
ResultSet: 负责封装数据库返回的查询的结果.     

   

3Jdo是什么
答:

JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。

JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。

另外,JDO很灵活,因为它可以在任何数据底层上运行。

JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

课上讲解XML技术知识的很少,但是对于企业面试过程中这一方面的运用是很广泛的,大家一定要重视XML文本的运用操作。

4xml有哪些解析技术?区别是什么?★★
答:

有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,

而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。

它顺序读取XML文件,不需要一次全部装载整个文件。

5、你在项目中用到了xml技术的哪些方面?如何实现的?
答:

用到了数据存贮,信息配置两方面。

在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,

接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,

软件的各种配置参数都存贮在XML文件中。

6XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? ★★★★
答:

两种形式 :dtd  schema。

本质区别 :schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)。

解析文档方式:有DOM,SAX,STAX等 。
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,

而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。

                                                                                        欢迎有志之士共勉!
                                                                                        QQ:364337403 http://www.toocruel.net
												

Java面试题精选(二)线程编程、数据库理论和Jdbc部分的更多相关文章

  1. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

  2. 阿里、华为、腾讯Java技术面试题精选

    阿里.华为.腾讯Java技术面试题精选 2017-10-27 19:30技术/腾讯/华为 JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读 ...

  3. Java面试题精选(三) JSP/Servlet Java面试逻辑题

    --   JSP/Servlet  Java面试逻辑题   --     很显然,Servlet/JSP的WEB前端动态制作的重要性比HTML/CSS/JS的价值高很多,但我们都知道他们都是建立在HT ...

  4. Java面试题精选(一)基础概念和面向对象

    --   基础概念和面向对象   --      全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见: 基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常. ...

  5. java面试题(二)

    21.描述一下JVM加载class文件的原理机制? 答:JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时 ...

  6. 精选Java面试题(二)

    Java中的方法覆盖重写(Overriding)和方法重载(Overloading)是什么意思? Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况.与此相对,方法 ...

  7. Java面试题整理二

    一.io有几种流? 有两种流:字节流和字符流. 字节流继承自inputstream和outstream. 字符流继承自write和read. 二.Jdbc的开发流程? JDBC编程的六个步骤: 1)加 ...

  8. java面试题实战二

    1.spring 是如何创建bean的? 在IoC容器中,bean的获取主要通过BeanFactory和ApplicationContext获取,这里ApplicationContext实际上是继承自 ...

  9. java面试题—精选30道Java笔试题解答(一)

    下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~ 1. 下面哪些是Thread类的方法() A start() B run() C exit() D getP ...

随机推荐

  1. poj 2363 Blocks(暴力)

    题目链接:http://poj.org/problem?id=2363 思路分析:由于数据较小,采用暴力搜索法.假设对于矩形边长 1 <= a <= b <= c <= N; ...

  2. MySQL PrepareStatement基本的两种模式&客户端空间占用的源码分析

    关于预编译(PrepareStatement),对于所有的JDBC驱动程序来讲,有一个共同的功能,就是“防止SQL注入”,类似Oracle还有一种“软解析”的概念,它非常适合应用于OLTP类型的系统中 ...

  3. Android apk逆向实战

    简介 逆向Android apk其实是一个分析Android apk的一个过程,必须了解Android程序开发的流程.结构.语句分支.解密原理等等. 功能 破解一个注册验证程序(自写一个简单的注册验证 ...

  4. 【OpenCV】OpenCV2.4.6 与Visiual Studio 2008,Python2.7.5配置和图像载入显示

    自从OpenCV2.2开始,OpenCV 库便分成几个模块并位于lib文件中,本节介绍从OpenCV2.4.6与VS2008 .Python2.7.5如何配置环境,如何外部文件载 入图像.在窗口中显示 ...

  5. 数据库 isnull()、nvl()、ifnull() 使用

    SqlServer 插入字段值 为空 设置默认值 isnull(val_1,val_2) 当val_1为 null 的时候 返回 val_2的值 Oracle nvl(val_1,val_2) 当va ...

  6. 使用 getopt() 进行命令行处理

    引言 在早期的 UNIX® 中,其命令行环境(当时的唯一用户界面)包含着数十种小的文本处理工具.这些工具非常小,通常可很好地完成一项工作.这些工具通过较长的命令管道链接在一起,前面的程序将其输出传递给 ...

  7. docker学习笔记15:Dockerfile 指令 USER介绍

    USER指令用于指定容器执行程序的用户身份,默认是 root用户. 在docker run 中可以通过 -u 选项来覆盖USER指令的设置. 举例:docker run -i -t -u mysql ...

  8. 【HTTP 2】 序言

    笔者序 HTTP 2 这个关键词在各大 IT 网站出现频率节节升高,然而出现在大家视野里的,仍以浅析居多.虽有一部分实战(如 InfoQ 之前推送的 iOS App 网络层次架构优化),但针对 HTT ...

  9. CCIE路由实验(4) -- BGP路由控制

    1.过滤BGP路由的方法2.用AS-path filter控制路由3.用Community Filter控制路由 enableconf tno ip do loenable pass ciscolin ...

  10. 对base-adapter-helper的简单分析

    在微博上看到了这篇Android ListView适配器应该这样写,受益匪浅. 于是依据文章结尾的介绍来到了base-adapter-helper的github,地址:https://github.c ...