美文网首页
程序员面试修炼08 | 京东2016笔试题

程序员面试修炼08 | 京东2016笔试题

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

    上帝通常会用三种方式给曾经付出的人们作答:他点头给你想要的;他摇头给你更好的;他让你等待,然后给你最好的。——刘强东

    image

    名词解释

    1、DHCP:(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,或者给内部网络管理员作为对所有计算机作中央管理的手段。

    2、UDP:全称是User Datagram Protocol, 意思是用户数据报协议。是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!是应用程序之间的简单通信。UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。

    image

    笔试/面试真题真题

    题目描述(京东-2016笔试题)

    果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。问最初这堆苹果最少有多少个。

    给定一个整数n,表示熊的个数,返回最初的苹果数,保证有解。

    测试样例:

    2

    返回:3

    解题思路:

    无法从后往前推,因为最后一个熊拿到的个数是不确定的,所以就使用遍历,从n+1开始,判断在每一次的加减的过程中,该数是否对n取余等于1,如果是则继续减,直到熊的个数等于0为止,否则就进入下一个数的判断。

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

    image image

    技术知识点

    数据库基本知识点(下)

    第四节

    一、相关概念和知识点

    SQL语句总结

    1. SELECT:将资料从数据库中的表格内选出,两个关键字:从 (FROM) 数据库中的表格内选出 (SELECT)。

    语法为:SELECT "栏位名"FROM "表格名"

    2. DISTINCT:在上述 SELECT 关键词后加上一个DISTINCT 就可以去除选择出来的栏位中的重复,从而完成求得这个表格/栏位内有哪些不同的值的功能。

    语法为:SELECT DISTINCT "栏位名" FROM "表格名"

    3. WHERE:这个关键词可以帮助我们选择性地抓资料,而不是全取出来。语法为:SELECT "栏位名"FROM "表格名" WHERE "条件"

    4. AND OR:上例中的 WHERE 指令可以被用来由表格中有条件地选取资料。这个条件可能是简单的 (像上一页的例子),也可能是复杂的。复杂条件是由二或多个简单条件透过 AND 或是 OR 的连接而成。

    语法为:SELECT "栏位名" FROM "表格名" WHERE "简单条件" {[AND|OR] "简单条件"}+

    5. IN:在 SQL 中,在两个情况下会用到 IN 这个指令;这一页将介绍其中之一:与WHERE 有关的那一个情况。在这个用法下,我们事先已知道至少一个我们需要的值,而我们将这些知道的值都放入IN 这个子句。

    语法为:SELECT "栏位名" FROM "表格名" WHERE "栏位名"IN ('值一', '值二', ...)

    6. BETWEEN:IN 这个指令可以让我们依照一或数个不连续 (discrete)的值的限制之内抓出资料库中的值,而 BETWEEN 则是让我们可以运用一个范围 (range) 内抓出资料库中的值。

    语法为:SELECT "栏位名" FROM "表格名"WHERE "栏位名" BETWEEN '值一' AND '值二'

    7. LIKE:LIKE 是另一个在WHERE 子句中会用到的指令。基本上, LIKE 能让我们依据一个模式(pattern) 来找出我们要的资料。

    语法为:SELECT "栏位名" FROM "表格名" WHERE "栏位名"LIKE {模式}

    8. ORDER BY:我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大(ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY 这个指令来达到我们的目的。

    语法为:SELECT "栏位名" FROM "表格名 [WHERE"条件"] ORDER BY "栏位名" [ASC, DESC]

    9. 函数:函数允许我们能够对这些数字的型态存在的行或者列做运算,包括 AVG (平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM (总合)。

    语法为:SELECT "函数名"("栏位名") FROM "表格名"

    10. COUNT:这个关键词能够帮我我们统计有多少笔资料被选出来。

    语法为:SELECT COUNT("栏位名") FROM "表格名"

    11. GROUP BY:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

    语法为:SELECT "栏位1",SUM("栏位2") FROM "表格名" GROUP BY "栏位1"

    12. HAVING:该关键词可以帮助我们对函数产生的值来设定条件。

    语法为:SELECT "栏位1",SUM("栏位2") FROM "表格名" GROUP BY "栏位1" HAVING (函数条件)

    13. ALIAS:我们可以通过ALIAS为列名称和表名称指定别名。

    语法为:SELECT "表格别名"."栏位1" "栏位别名" FROM "表格名" "表格别名"

    二、举例说明SQL关键词使用方法

    下面为一个例子,通过它我们应该能很好地掌握以上关键词的使用方法。

    例子:

    Student(S#,Sname,Sage,Ssex) 学生表

    Course(C#,Cname,T#) 课程表

    SC(S#,C#,score) 成绩表

    Teacher(T#,Tname) 教师表

    问题:

    1.查询“001”课程比“002”课程成绩高的所有学生的学号;

    select a.S#

    from (select s#,score from SC whereC#='001') a,

    (select s#,score from SC where C#='002') b

    where a.score>b.score and a.s#=b.s#;

    2.查询平均成绩大于60分的同学的学号和平均成绩;

    select S#,avg(score)

    from sc

    group by S# having avg(score) >60;

    3.查询所有同学的学号、姓名、选课数、总成绩;

    selectStudent.S#,Student.Sname,count(SC.C#),sum(score)

    from Student left Outer join SC onStudent.S#=SC.S#

    group by Student.S#,Sname

    4.查询姓“李”的老师的个数;

    select count(distinct(Tname))

    from Teacher

    where Tname like '李%';

    5.查询没学过“叶平”老师课的同学的学号、姓名;

    select Student.S#,Student.Sname

    from Student

    where S# not in (select distinct( SC.S#)from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T#andTeacher.Tname='叶平');

    6.查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

    select Student.S#,Student.Sname

    from Student,SC

    where Student.S#=SC.S# and SC.C#=’001′andexists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');

    7.查询学过“叶平”老师所教的所有课的同学的学号、姓名;

    select S#,Sname

    from Student

    where S# in

    (select S#

    from SC ,Course ,Teacher

    where SC.C#=Course.C# andTeacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S#having count(SC.C#)=(select count(C#) from Course,Teacher whereTeacher.T#=Course.T# and Tname='叶平'));

    8.查询所有课程成绩小于60分的同学的学号、姓名;

    select S#,Sname

    from Student

    where S# not in (select Student.S# fromStudent,SC where S.S#=SC.S# and score>60);

    9.查询没有学全所有课的同学的学号、姓名;

    select Student.S#,Student.Sname

    from Student,SC

    where Student.S#=SC.S#

    group by Student.S#,Student.Sname havingcount(C#) <(select count(C#) from Course);

    10.查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

    select S#,Sname

    from Student,SC

    where Student.S#=SC.S# and C# in (select C# from SC where S#='1001');

    11.删除学习“叶平”老师课的SC表记录;

    Delect SC

    from course,Teacher

    where Course.C#=SC.C# and Course.T#=Teacher.T# and Tname='叶平';

    12.查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

    SELECT L.C# 课程ID,L.score最高分,R.score 最低分

    FROM SC L ,SC R

    WHERE L.C# = R.C#

    and

    L.score = (SELECT MAX(IL.score)

    FROM SC IL,Student IM

    WHERE IL.C# = L.C# and IM.S#=IL.S#

    GROUP BY IL.C#)

    and

    R.Score = (SELECT MIN(IR.score)

    FROM SC IR

    WHERE IR.C# = R.C#

    GROUP BY IR.C# );

    13.查询学生平均成绩及其名次

    SELECT 1+(SELECT COUNT( distinct 平均成绩)

    FROM (SELECT S#,AVG(score) 平均成绩

    FROM SC

    GROUP BY S# ) T1

    WHERE 平均成绩 > T2.平均成绩) 名次, S# 学生学号,平均成绩

    FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2 ORDER BY 平均成绩 desc;

    14.查询各科成绩前三名的记录:(不考虑成绩并列情况)

    SELECT t1.S# as 学生ID,t1.C#as 课程ID,Score as 分数

    FROM SC t1

    WHERE score IN (SELECT TOP 3 score

    FROM SC

    WHERE t1.C#= C#

    ORDER BY score DESC)

    ORDER BY t1.C#;

    15.查询每门功成绩最好的前两名

    SELECT t1.S# as 学生ID,t1.C#as 课程ID,Score as 分数

    FROM SC t1

    WHERE score IN (SELECT TOP 2 score

    FROM SC

    WHERE t1.C#= C#

    ORDER BY score DESC )

    ORDER BY t1.C#;

    image

    大厂暑期实习的招聘已到中后期,无论有没有拿到offer都不要松懈。请相信:越努力,越幸运!小伙伴们,跟着【19应届生】学习技术知识,我们一起加油吧~!

    image

    相关文章

      网友评论

          本文标题:程序员面试修炼08 | 京东2016笔试题

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