2015后台开发训练记录错题集

1.将一组无序的数据重新排列成有序序列,其方法有()
a.拓扑排序
b.快速排序
c.堆排序
d.基数排序

答案是bcd
a中有向无环图通过拓扑排序算法遍历图中所有顶点,它并不是排序数据的算法。

2.某服务请求经负载均衡设备分配到集群A、B、C、D进行处理响应的概率分别是10%、20%、30%和40%。已知测试集群所得的稳定性指标分别是90%、95%、99%和99.9%。现在该服务器请求处理失败,且已排除稳定性以外的问题,那么最有可能在处理该服务请求的集群是__

答案是ab
对于选择题来说,很快的计算:选中该集群,并且处理失败了的概率为:10%*10%20%*5%30%*1%40%*0.1%A与B的概率最高。
下面是正式的解法
令L代表服务器请求处理失败,A,B,C,D分别代表对应的集群处理响应。 
  则有P(A)=10%,P(B)=20%,P(C)=30%,P(D)=40% 
  P(L|A)=10%,P(L|B)=5%,P(L|C)=1%,P(L|D)=0.1% 
  题目要求P(X|L),X可取A,B,C,D,求其中的最大值。 
  根据贝叶斯概率公式 
  P(A|L)P(L)=P(L|A)P(A)=0.01 
  P(B|L)P(L)=P(L|B)P(B)=0.01 
  P(C|L)P(L)=P(L|C)P(C)=0.003 
  P(D|L)P(L)=P(L|D)P(D)=0.0004 
  其中,P(L)虽然未知,但不用计算,即可比较大小,得P(A|L)=P(B|L)>P(C|L)>P(D|L) 
  所以选A,B  

3.下列说法正确的有( )
a.环境变量可在编译source code时指定
b.在编译程序时,所能指定的环境变量不包括class path
c.javac一次可同时编译数个Java源文件
d.javac.exe能指定编译结果要置于哪个目录(directory)

答案acd
javac有classpath参数,编译程序时候需要指定class path,要不编译器如何才能找到需要编译的程序,b错
在Java中,环境变量可在编译source code时指定
a选项-d即可设置系统属性
c选项一次编译多个java文件用javac *.java. 即可编译当前目录下的所有java文件
d选项-s指定存放生成的源文件的位置
javac -help 
  用法: javac <options> <source files> 
  其中, 可能的选项包括: 
    -g                         生成所有调试信息 
    -g:none                    不生成任何调试信息 
    -g:{lines,vars,source}     只生成某些调试信息 
    -nowarn                    不生成任何警告 
    -verbose                   输出有关编译器正在执行的操作的消息 
    -deprecation               输出使用已过时的 API 的源位置 
    -classpath <路径>            指定查找用户类文件和注释处理程序的位置 
    -cp <路径>                   指定查找用户类文件和注释处理程序的位置 
    -sourcepath <路径>           指定查找输入源文件的位置 
    -bootclasspath <路径>        覆盖引导类文件的位置 
    -extdirs <目录>              覆盖所安装扩展的位置 
    -endorseddirs <目录>         覆盖签名的标准路径的位置 
    -proc:{none,only}          控制是否执行注释处理和/或编译。 
    -processor <class1>[,<class2>,<class3>...]
  要运行的注释处理程序的名称; 绕过默认的搜索进程 
    -processorpath <路径>        指定查找注释处理程序的位置 
    -parameters                生成元数据以用于方法参数的反射 
    -d <目录>                    指定放置生成的类文件的位置 
    -s <目录>                    指定放置生成的源文件的位置 
    -h <目录>                    指定放置生成的本机标头文件的位置 
    -implicit:{none,class}     指定是否为隐式引用文件生成类文件 
    -encoding <编码>             指定源文件使用的字符编码 
    -source <发行版>              提供与指定发行版的源兼容性 
    -target <发行版>              生成特定 VM 版本的类文件 
    -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用 
    -version                   版本信息 
    -help                      输出标准选项的提要 
    -A关键字[=值]                  传递给注释处理程序的选项 
    -X                         输出非标准选项的提要 
    -J<标记>                     直接将 <标记> 传递给运行时系统 
    -Werror                    出现警告时终止编译 
    @<文件名>                     从文件读取选项和文件名

4.在Java中,下列说法错误的有( )
a.数组是一种对象
b.数组属于一种原生类
c.int number = []{31,23,33,43,35,63};
d.数组的大小可以任意改变

答案bcd
数组是对象,int float char这些基本类型不是对象。关于如何判断基本类型和对象,参考下面的:
行为:
基本类型只是一个值,没有任何行为
对象类型有自己的行为
内存分配:
基本类型在栈内分配
对象在堆内分配
对象引用保存在栈内
引用与值:
基本类型是值类型,仅表示一个值,保存在栈内
引用类型分两部分,对象引用保存在栈内,对象保存在堆内,
访问变量,是使用的引用找对象
java中的数据类型分类:
     基本数据类型(或叫做原生类、内置类型)8种:
         整数:byteshortintlong(默认是int类型)
         浮点类型: floatdouble(默认是double类型)
         字符类型:char
         布尔类型:boolean
         引用数据类型3种:数组,类,接口
其中,基本数据类型之间除了boolean,其他数据类型之间可以任意的相互转换(强制转化或默认转换),这个与c++中有点区别。
数组长度一旦定义,不可改变

5.下列说法错误的有( )
a.能被java.exe成功运行的java class文件必须有main()方法
b.J2SDK就是Java API
c.Appletviewer.exe可利用jar选项运行.jar文件
d.能被Appletviewer成功运行的java class文件必须有main()方法

答案bcd
BJ2SdkSun公司开发的编程工具。
       java api是应用程序接口
CJARJava ArchiveJava 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件 。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。打开方式java -jar
AppletViewer是与html有关的
D:appletviewer 提供了一个Java运行环境,在其中可测试小应用程序Applet。appletviewer 读取包含小应用程序的HTML文件并在一个窗口中运行它们。能被Appletviewer成功运行的java class文件没有main()方法

6.卡方分布的方差为2倍的自由度为?

答案是2n
卡方分布:若 n 个相互独立的随机变量ξ ₁ 、ξ ₂ 、……、ξ n ,均服从标准正态分布(也称独立同分布于标准正态分布),则这 n 个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布( chi-square distribution )。
分布的均值为自由度 n ,记为 E(x^2) = n 。
分布的方差为 2 倍的自由度 (2n) ,记为 D(x^2) = 2n 。

7.如何减少换页错误?
a.进程倾向于占用CPU
b.访问局部性(locality of reference)满足进程要求
c.进程倾向于占用I/O
d.使用基于最短剩余时间(shortest remaining time)的调度机制

换页错误又称缺页错误,当一个程序试图访问没有映射到物理内存的地方时,就会出现缺页错误, 这时操作系统就要去虚拟内存中加载这块内存页。
减少换页错误的方法,即降低缺页中断率: 
1、内存页框数。增加作业分得的内存块数。 
2、页面大小。页面划分越大,中断率越低。 
3、替换算法的优劣影响缺页中断次数 
4、程序局部性。程序局部性好可减少缺页中断(为什么?)。 
那么B是对的,而对于D,最短剩余时间调度是CPU调度就绪进程的方式,与页面置换算法无关,不要搞混淆了。
局部性原理是一个经典的原理,分为时间局部性和空间局部性,意思是应用一旦访问了一个空间的数据,则这个空间中的相邻区域的内容也很可能被访问,一旦访问了某一段代码,则其周围的代码也很可能被访问。局部性原理的运用就是根据这个,把可能访问的数据和代码都加在到内存中,以后访问就不用加载了(因为主要的消耗在IO端)。这也是迪杰斯特拉提出的goto语句有害的依据,应为goto语句能打破局部性原理,造成计算机的延迟加剧。

8.给出以下定义,下列哪些操作是合法的?
const char *p1 = “hello”;
char *const p2 = “world”;
a.p1++;
b.p1[2] = ‘w’;
c.p2[2] = ‘l’;
d.p2++;

值得注意的是:"hello""world"存放在字符串常量区,它是不能更改的,所以b编译报错;c程序执行会崩溃;p2指向不能改变,d错

9.以下集合对象中哪几个是线程安全的?( )
a.ArrayList
b.Vector
c.Hashtable
d.Stack
这里写图片描述
这里写图片描述

答案bcd

10.冯诺依曼 计算机
由CPU处理器、
运算器、
存储器( RAM, ROM等 )
输入设备、
输出设备五部分组成
11.有1000亿条记录,每条记录由url,ip,时间组成,设计一个系统能够快速查询以下内容
1.给定url和时间段(精确到分钟)统计url的访问次数
2.给定ip和时间段(精确到分钟)统计ip的访问次数

答:首先,1000亿条记录全部放到内存肯定不够,那就是分成小文件了,然后整合;
公共的时间段,因为精确到分钟,我们把这每一分钟建成一个小文件,每个小文件肯定会有许多重复的ip,url;
现在统计每个小的文件中url的访问量和ip的访问次数,方法就是建立索引;
(建立索引的目的是为了减少查询次数,但是随着索引级数增多也会造成花更多的时间在建立索引上);
建立url的索引,假如是www.nowcoder.com/question,可以分别给www.nowcoder.com和question建立索引,那么来了一条url,先看一级索引是不是匹配,匹配再看二级索引,相同的话就是我们要的url目标;
ip的索引也是一样,ip分成4段建立索引;
所以这里影响效率的就是在索引建立这块,索引建立好那就是查询的事了的,就会变得非常快。
假定给定了某个时间段,找出url的访问量,那么先找到给定的时间段,对应着刚开始分割的小的文件(每一个分钟)中搜索,通过索引找到相同的url之后,开始统计,直到搜索完所有的给定时间段内的所有的小的文件;
求ip的访问次数也是一样,按照给定的时间段,找到对应的小的文件,通过索引找到相同的ip后统计,直到搜索完了给定时间段内的所有的小的文件。

12.
实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
由于是分布式系统,假设至少有26台机器,每个机器存储以26个字母开头的query日志文件(如机器1存的是a字母开头的,机器2存的是以b字母开头的……)
每个机器上维护着一张哈希表,对于每条query, 在哈希表表中存放其地址(哈希地址为链式的),并对其进行排序,按频率由高到低进行排序。
当用户进行搜索时,可以很快定位到某台机器,并根据哈希表,返回出现频率最高的前10条query。

提示:
1、可以预处理日志
2、假设query不超过10亿条,每个query不超过50字节。
3、考虑在大查询量的情况下如何实现分布式服务
https://www.nowcoder.com/test/question/done?tid=7691582&qid=1890#summary
13.https://www.nowcoder.com/questionTerminal/27fd7594a4a84560bae5d831264c006a

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
软件后台开发岗位是负责设计和开发后端软件系统及相应功能的岗位。这个岗位的主要职责包括: 1. 设计和开发后端软件系统:软件后台开发人员需要与产品经理、UI设计师等前段技术人员协作,完成后端软件系统的设计、开发和维护。他们需要处理大量的数据和信息,确保系统的高效性和稳定性。 2. 实现各种功能:软件后台开发人员需要设计并开发各种功能模块,以满足产品的需求。这些功能模块可能包括用户管理、权限管理、数据分析、安全防护、性能优化等。 3. 接口开发:软件后台开发人员需要与其他相关团队(如前端开发团队、移动端开发团队、数据团队等)进行沟通与协作,开发相应的接口,以实现各团队之间的顺畅对接。 4. 数据库管理:后台开发人员需要管理和维护数据库,确保数据的准确性和完整性。他们可能需要设计数据库模式,优化查询语句,以及处理各种数据库相关的问题。 5. 运维支持:软件后台开发人员还需要参与系统的部署、维护和监控,确保系统的稳定性和可用性。 6. 技术研究与实施:后台开发人员需要关注最新的技术趋势,学习并实施新的技术和工具,以提高开发效率和质量。 这个岗位需要具备一定的计算机科学基础知识,包括但不限于数据结构、算法、操作系统、网络原理等。同时,对行业动态和新兴技术保持关注,熟悉并理解常用的开发框架和工具也非常重要。 总的来说,软件后台开发岗位是一个对技术要求较高,且涉及面较广的岗位。这个岗位的工作人员需要不断学习,不断提高自己的技术水平,以应对日益复杂和多样化的工作需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值