面试题
1.自我介绍这个不用说了,自己介绍一下自己。2.数据库MySql和SQLServer以及Oracle的区别?----1.Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。----2.Microsoft SQL Server 2014:中等贵,功能最少,安装中等方...
1.自我介绍
这个不用说了,自己介绍一下自己。
2.数据库MySql和SQLServer以及Oracle的区别?
----1.Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。
----2.Microsoft SQL Server 2014:中等贵,功能最少,安装中等方便,Microsoft SQL Server 2014环境里的其他相关组件最少,支持平台最少,使用最方便,开发最方便,运维最方便,不开源,速度中等,一般安全。
----3.Mysql:免费,功能中等,安装最方便,Mysql环境里的其他相关组件数量中等,支持平台最多,使用最不方便,开发最不方便,运维最不方便,有开源版本,速度最快,最不安全。
二、
Oracle传统,跨平台,稳定,适合OLTP,最接近数据库设计范式,一致性处理是最好的,也是最复杂的。适合金融,电信等企业。要想用好并发挥其性能,对管理员的能力要求较高。另维护成本较高。SqlServer目前只能在Windows系列执行,限制其发展,所以在高可用,灾备,并发也受win的限制。优点是,操作简单,人员要求低,学习曲线低,据说纽交所使用中。MySql适合开发者,简单。不过随着Oracle的入主,功能越来越完善,又因为其宣布要开源,阿里开发了改进大数据库,性能和应用场景不断拓宽,未来前进可人。
Mysql 屌丝创业青年
Sqlserver 富二代
Oracle 创一代+高富帅 ;
MySQL:瑞典MYSQLAB推出,关系型数据库,开源免费,适用于WEB网站、日志管理、数据仓库和嵌入式系统等小型系统。 SQLServer:微软Microsoft推出,关系型数据库,可视化、安全性与稳定性较好,适用于企业级海量数据存储查询。
Oracle:美国甲骨文公司推出,关系型数据库,跨平台,安全稳定,结构复杂,对管理员要求高,常用于金融、电信领域。
3.数据库的左连接和右连接
1)左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来
2)右连接:右连接是只要右边表中有记录,数据就能检索出来
4.数据库的视图,为什么要用视图?
视图其实就是select查询语句 通过关联查询或者其他查询组建起来的,他是多个表的查询结果集,使用视图可以提高一个程序的SQL效率,比平常使用select 更加便捷,我们可以直接select * from 视图VIEW 来获取,数据库也更容易维护更新
5.什么是事务?
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
6.数据库如何获取表里最大值?
假如想要取得最大ID的name值(这里只是借ID为例 不用ordery by)
解决办法:select max(id) from db_name;
7.那获取第二大的呢?
先递减排序获取前两条,再递增排序获取第一条
select * from (select recID from book order by recID DESC limit 0,2) as b order by b.recID ASC limit 0,1;
还有一种解法:
先获取它的最大值,再获取小于最大值的数,然后取最大值。因为这里用到了max函数,会造成对全表扫描,速度略慢些。
select max(recID) as SecondID from book where recID<(select max(recID) from book);
8.短距离通信
因为我是物联网专业的,所以他问了一下物联网方面的知识。我给他介绍了短距离通信。
9.如何实现多线程服务器?
https://blog.csdn.net/fengsigaoju/article/details/56019956
如何实现多线程缓冲池?
通过队列来实现
https://blog.csdn.net/z55887/article/details/79060070
10.java的数组、List、map的区别?
数组是固定长度的,list不固定,map是基于key-values进行映射的。访问元素数组可以通过下标访问,list需要遍历,map可以通过Key值获取map的values。
11.链表反转
1.链表内反转
节点的下一个元素插到节点之前。依次进行,
例如:
链表的第二个插到第一个之前,第三个插到第二个之前
https://blog.csdn.net/xiao__jia__jia/article/details/82788117
2.用栈实现
遍历链表,把每一个节点放到栈里面,遍历完,然后再出栈
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
import java.util.Stack;
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}//链表原结构
public class Solution {
public ListNode do_reverse(Stack<ListNode> data)
{
ListNode ans=data.pop();
if(data.empty())
{
ans.next=null;
return ans;
}
ans.next=do_reverse(data);
return ans;
}//递归反转链表核心代码
public ListNode ReverseList(ListNode head)
{
if(head==null)
return null;
Stack<ListNode> data=new Stack<ListNode>();//下方循环将原链表所有节点压栈,方便反转
while(true)//循环压栈
{
if(head.next==null)
{
data.push(head);
break;
}
data.push(head);
head=head.next;
}
return do_reverse(data);//调用核心反转函数
}//采用栈结构,调用核心反转函数代码
}
12.实现线程的方式
1.继承Thread类。
2.实现Runnable,然后重写run方法。
两种方式的区别。
1.一个类只能继承一个父类,如果已经继承了Thread,就无法继承其他的了,所以一般用runnable.
2.使用Runnable可以避免点继承的局限,一个类可以继承多个接口。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)