美文网首页
程序员面试修炼06 | 搜狐2018内推面试题

程序员面试修炼06 | 搜狐2018内推面试题

作者: 淇奥qiaoqiao | 来源:发表于2018-05-12 19:25 被阅读0次

“There are two ways of constructing asoftware design. One way is to make it so simple that there are obviously nodeficiencies. And the other way is to make it so complicated that there are noobvious deficiencies.”- C.A.R. Hoare

设计软件有两种方法:一种是简单到明显没有缺陷,另一种复杂到缺陷不那么明显。—— 托尼·霍尔

image

名词解释

TCP/IP协议:TransmissionControl Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。

image

笔试/面试真题

题目描述(搜狐-2018)

image

输入描述:

两行数据,

第一行包括n和m,空格隔开,n表示输出Kolakoski序列的前n项,m表示给定数组的长度

输出描述:

n行

输出Kolakoski序列的前n项

输入例子:

[2,3]

输出例子:

[2,2]

解题思路

这个题的首要的一点是要理解题目的意思,什么是Kolakoski序列以及怎么求?

第一,Kolakoski序列是基于一个初始序列的。

第二,Kolakoski序列中的元素按照相邻的元素分为一组,每组求其长度得到是它本身。

那么,我们怎么根据给定的初始数组得到对应的Kolakoski序列呢?

我们举个例子说明一下:

假设给定的初始数组是[2,3],因为初始数组的第一个元素为2,所以Kolakoski序列前2个元素为[2,2],

接下来,我们定义2个指针,一个指针a指向初始数组的第二个元素3,另一个指针b指向Kolakoski序列的第二个元素2,

我们看指针b指向2,a指向3,所以我们往Kolakoski序列中加入2个3,Kolakoski序列变为[2,2,3,3]

之后b指针继续指向下一个元素3,a指针指向2(a指针循环指向初始数组的每个值),所以我们往Kolakoski序列中加入3个2,Kolakoski序列变为[2,2,3,3,2,2,2]

……

重复上述步骤,直到Kolakoski序列中的元素大于n即可。

这里有一点比较特殊:当初始数组的第一个元素为1时,Kolakoski序列为[1],接下来我们还要根据初始数组的第二个值往Kolakoski序列添加元素。

下面来看解题代码(如果代码页面超出可以左右上下移动):

import java.util.*;

public class Main {

public static void main(String[] args) {  

    Scanner in = new Scanner(System.in);  

    while (in.hasNextInt()) {  

        int n = in.nextInt();  

        int m = in.nextInt();  

        int[] a = new int[m];  

        in.nextLine();  

        for(int i=0;i<m;i++)  

            a[i] = in.nextInt();  

        List<Integer> list = new ArrayList<>();             

        int index1 = 0;  

        int index2 = 0;  

        while(list.size() < n){  

            if(index2 == list.size()){                     

                for(int i=0;i<a[index1];i++)  

                    list.add(a[index1]);  

            }else{  

                for(int i=0;i<list.get(index2);i++)  

                    list.add(a[index1]);  

            }  

            index2++;  

            index1 = (index1+1)%a.length;  

        }  

        for(int i=0;i<n;i++)  

            System.out.println(list.get(i));  

    }  

}  
image

技术知识点

数据库基本知识点(上)

数据库是计算机类笔试面试中不可避免会遇到的考点,尤其是银行和部分传统软件类公司。这里根据整理的资料,对数据库的相关知识也做个总结吧。希望学过数据库但长时间不用的同学根据这些知识能够回忆和重拾,没学过的同学能掌握一些数据库的基础知识。

第一节

1.1相关概念

1.\ Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。

  1. Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。

  2. DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织、存储和管理数据、高效地获取和维护数据。

  3. DBS:数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。

  4. 数据模型:是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础;其组成元素有数据结构、数据操作和完整性约束。

  5. 概念模型:也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。

  6. 逻辑模型:是按计算机系统的观点对数据建模,用于DBMS实现。

  7. 物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。

  8. 实体和属性:客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性。

10.E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具。

11.关系模式:从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表。

12.型/值:型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例。

13.数据库模式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述。

14.数据库的三级系统结构:外模式、模式和内模式。

15.数据库内模式:又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。

16.数据库外模式:又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式。

17.数据库的二级映像:外模式/模式映像、模式/内模式映像。

1.2 重点知识点
  1. 数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。

2. 数据模型的组成要素是:数据结构、数据操作、完整性约束条件。

3. 实体型之间的联系分为一对一、一对多和多对多三种类型。

4. 常见的数据模型包括:关系、层次、网状、面向对象、对象关系映射等几种。

5. 关系模型的完整性约束包括:实体完整性、参照完整性和用户定义完整性。

6. 阐述数据库三级模式、二级映象的含义及作用。

数据库三级模式反映的是数据的三个抽象层次: 模式是对数据库中全体数据的逻辑结构和特征的描述。内模式又称为存储模式,是对数据库物理结构和存储方式的描述。

外模式又称为子模式或用户模式,是对特定数据库用户相关的局部数据的逻辑结构和特征的描述。

数据库三级模式通过二级映象在 DBMS内部实现这三个抽象层次的联系和转换。外模式面向应用程序, 通过外模式/模式映象与逻辑模式建立联系,实现数据的逻辑独立性。 模式/内模式映象建立模式与内模式之间的一对一映射, 实现数据的物理独立性。

第二节

2.1 相关概念

1. 主键: 能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。若一个关系有多个候选键则可选其一作为主键(Primary key)。

2. 外键:如果一个关系的一个或一组属性引用(参照)了另一个关系的主键,则称这个或这组属性为外码或外键(Foreign key)。

3. 关系数据库: 依照关系模型建立的数据库称为关系数据库。 它是在某个应用领域的所有关系的集合。

4. 关系模式: 简单地说,关系模式就是对关系的型的定义, 包括关系的属性构成、各属性的数据类型、属性间的依赖、 元组语义及完整性约束等。 关系是关系模式在某一时刻的状态或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。

5. 实体完整性:用于标识实体的唯一性。它要求基本关系必须要有一个能够标识元组唯一性的主键,主键不能为空,也不可取重复值。

6. 参照完整性: 用于维护实体之间的引用关系。 它要求一个关系的外键要么为空,要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值。

7. 用户定义的完整性:就是针对某一具体应用的数据必须满足的语义约束。包括非空、唯一和布尔条件约束三种情况。

2.2重要知识点

1. 关系数据库语言分为关系代数、关系演算和结构化查询语言三大类。

2. 关系的 5 种基本操作是选择、投影、并、差、笛卡尔积。

3.关系模式是对关系的描述,五元组形式化表示为:R(U,D,DOM,F),其中

       R —— 关系名

       U —— 组成该关系的属性名集合

       D —— 属性组 U 中属性所来自的域

       DOM —— 属性向域的映象集合

       F —— 属性间的数据依赖关系集合

4.笛卡尔乘积,选择和投影运算如下:

image image image

相关文章

网友评论

      本文标题:程序员面试修炼06 | 搜狐2018内推面试题

      本文链接:https://www.haomeiwen.com/subject/cjphdftx.html