2018年笔试题——老虎证券1

在网上看到了笔试题的照片,记录一下自己解题的过程,以便以后毕业找工作的时候复习。

【思考】6个珠子,如果是在一条不可旋转不可翻转的排列上,其种数有A66即是720种方案,但是考虑珠子的拨动,即654321和543216是一样的手环,则需要除以6;同时考虑手环的翻转,即654321和123456是一样的,则需要除以2;所以一共的种数有A66/(6*2)=60种;

【思考】线程在操作数据时,可能会出现资源占用的情况,导致数据的不同步,第一种情况,A线程从内存中拿到i=0,B线程也从内存中拿到i=0,A线程i++之后,i=1写入内存,再一次i++,结果为2,写入内存,B线程的结果也为2写入内存,所以打印出的结果为2;第二种情况,A线程拿到i=0,i++,将i=1写入内存,AB线程从内存中取到i=1,A执行i++,得到i=2,写入内存,B执行i+=2,得到i=3,写入内存,所以输出为3;第三种情况,A先执行了,写入i=2,B取到i=2,执行i+=2得到4。因此选择2,3,4。

【思考】cut命令可以从一个文本文件或者文本流中提取文本列。sed(Stream EDitor)功能和awk一样,都是用来处理文本的,但是sed没有awk的功能强大,awk对列操作十分方便。pushd的功能是创建一个目录栈。

【思考】栈可以理解为一个单向的存放铁饼的圆筒,每次只能从栈的最上层拿出数据。A选项中,1先进栈,2进栈后出栈,3进栈后出栈,4进栈后出栈,1出栈,5进栈后出栈,可以实现。B选项中,5最先出栈,说明1,2,3,4都已经入栈且未出,因此只有一种出栈顺序,即5,4,3,2,1所以B不可能出现。C选项中,1先进栈,2进栈后出栈,3进栈后出栈,1出栈,4进栈后出栈,5进栈后出栈,可以实现。D选项中,1进栈出栈,2进栈,3进栈,4进栈,5进栈后出栈,4出栈,3出栈,2出栈,可以实现。

【思考】做这种题的方式,是先画出树,前序遍历,G即为树的root节点,通过中序遍历可知,ADEF为左子树,HMZ为右子树 。左子树中,通过前序遍历可知,D为左子树root节点,A为左子树的左子树,EF为左子树的右子树,由前序可知,左子树的右子树的root为F。右子树的root节点为M,H为右子树的左子树,Z为右子树的右子树。当树出来之后,进行后序遍历,为AEFDHZMG,选c。

【思考】线程间同步的方式主要由以下三种:互斥量,采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问;信号量(临界区),它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象;事件(信号),通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。即事件机制允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务。

【思考】SMTP:Simple Mail Transport Protocol,简单邮件传输协议,为了使得邮件准确的到达邮箱服务器,使用的是TCP协议。FTP:File Transport Protocol,文件传输协议,使用的TCP协议保证传输的准确性,FTP标准命令TCP端口号为21,Port方式数据端口为20。 Telnet协议是TCP/IP协议族的其中之一,是Internet远程登录服务的标准协议和主要方式,常用于网页服务器的远程控制,可供使用者在本地主机运行远程主机上的工作。DNS(Domin Name System)是域名解析系统,使用的协议为UDP协议,使用端口号53。

【思考】选择排序,时间复杂度为n^2。快速排序时间复杂度为NlogN,可以参考快速排序详解。堆排序,时间复杂度为NlogN,代码和详解可以参考堆排序详解,这篇文章写的十分易懂。并归排序的时间复杂度为O(nlog2n)。我也将在接下来的博客中总结上述几种排序方式,并且给出算法代码。

【思考】死锁的条件:
互斥条件:简单的说就是进程抢夺的资源必须是临界资源,一段时间内,该资源只能同时被一个进程所占有。
请求和保持条件:当一个进程持有了一个(或者更多)资源,申请另外的资源的时候发现申请的资源被其他进程所持有,当前进程阻塞,但不会是放自己所持有的资源。
不可抢占条件:进程已经获得的资源在未使用完毕的情况下不可被其他进程所抢占
在很多情况下这些条件都是合乎要求的。例如,为确保结果的一致性和数据库的完整性,互斥是非常有必要的。同理,不能随意的进行资源抢占。比如,当涉及数据资源时,必须提供回滚恢复机制(rollback recovery machanism)以支持抢占资源,这样才能把进程和他的资源恢复到以前适当的状态,使得进程最终可以重复他的动作。
前三个条件都是死锁存在的必要条件,但不是充分条件。对死锁的产生还需要第四个条件:
循环等待条件:存在一个封闭的进程链,使得每个进程至少占有此链中下一个进程所需要的一个资源。

 

【思考】TCP采用滑动窗口机制,没有被窗口确认的分组将会重传。TCP采用的校验方式为使用一个校验和函数来检验数据是否有错误,并没有采取冗余方式。当一定时间内,TCP没有收到确认信息,将会实施超时重传。在传输消息时,TCP使用ACK信号作为确认接收信号,TCP发送阶段需要经过3次握手,在取消连接时需要进行4次握手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/256700.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

神策数据携手老虎证券,用科技赋能美港股券商打造极致体验

近日,知名美港股券商老虎证券签约神策数据,双方将携力加快科技创新与金融服务的融合,充分发挥金融科技的价值,旨在为投资者带来更加优质的使用体验。 老虎证券旗下老虎社区致力于打造“离交易最近的美港股社区”,目前聚…

数据结构与算法-递归

2.3 递归 概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller in…

【30天熟悉Go语言】4 Go的变量、常量、运算符

文章目录 一、前言二、变量1、变量的基础使用2、变量的多种使用方式1)全局变量2)局部变量3)丢弃赋值 3、Go和Java的变量对比 三、常量1、Go和Java的常量对比 三、运算符1、算术运算符 、--2、运算符 &、* 四、总结 一、前言 Go系列文章&a…

idea简易创建main方法

最简易的创建main方法,按着图配置即可

idea执行main方法都要BUILD解决

开发代码中,很多时候我们为了验证一小段代码逻辑会直接写个main方法去执行,看看运行结果,最近发现idea 跑个main方法都要执行 compileJava 和 BUILD 解决方案: 去掉Delegate IDE build/run actions to gradle 勾选,应…

Idea运行main方法,不编译整个工程

在使用 IDEA 开发过程中,在一个main方法进行代码测试时,发现 IDEA 上 执行 main 方法后竟然编译整个项目!!! 最烦的是其他无关代码的报错 ,也会导致main方法不能编译执行。 我的idea版本如下,…

Java基础——main方法

深入理解main方法 解释main方法的形式:public static void main(String [] args){} main方法是由java虚拟机调用的。java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public。Java虚拟机在执行main()方法时不必创建对象,所以该…

美债提高上限的后果

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《再论以太坊的自限性》,谈了一下对比特币和以太坊自限性问题的再研讨,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币小幅回落至28k下方。昨日在28k上方遭遇了…

如何在Linux环境中执行main方法

对于程序员来说,很闹心的一个问题就是在生产上找bug,太太太难了,所以写测试类是一个用到很普遍的方法,那么测试类的main方法是如何被调用的呢,其实很简单啦。Linux命令:java -cp jar包 类的全限定名 参数 …

scala的MAIN方法

MAIN方法 scala和Java一样,如果要运行一个程序,必须有一个main方法。而在Java中main方法是静态的,而在scala中没有静态方法。在scala中,这个main方法必须放在一个单例对象中。 定义Main方法 main方法 scala def main(args:Array[S…

Java的main方法

文章目录 引言一、写法二、解释三、运行参考 引言 写Java代码时,最常用到main方法的场景是运行类中的某一个方法,进行测试,本文简单介绍一下Java的main方法。 一、写法 固定写法如下: public static void main(String[] args){ …

main方法详解

学习Java有一段时间了,一直没用过博客来写写自己在学习过程中遇到的问题和学习心得,看到别人在诸如博客这样的社区写一些总结觉得挺好的。索性,今天开始自己也用起博客记录学习。一来呢,能更好的总结学习知识。二来,有…

使用main方法启动spring程序

使用main方法启动spring程序 在 spring 框架中,由于对象都交给了 IoC 容器进行管理,那么直接在 main 方法中创建 service 层对象,就会出现空指针异常(NPE) 正确的方式是从 IoC 的容器中取出对象,再使用对象…

深入理解Java的main方法

一、简单介绍 在我们的Java程序中都会出现一个名称为main的方法,我们发现没有这个方法我们的程序就无法运行。 其实任何一个Java程序的运行入口都是这个main方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法&#…

SpringBoot项目main方法详解

前言 SpringBoot项目启动时通过执行main方法启动,main方法主要做了两方面工作: 初始化Spring容器启动tomcat运行项目 下面我们通过源码来看如何进行的上面两个操作。 源码分析 我们以debug的方式进行源码的分析。main方法中,我们调用了SpringApplic…

main方法和单元测试方法

1、编写代码可使用快捷键 输入main然后点击回车;输入sout然后点击回车。 输入想要输出的内容然后运行代码即可 2、java严格区分大小写 main方法也叫主函数,在一个类中只有一个main方法。 java中每一条语句都是以分号为结束标志。 3、单元测试方法 …

Java中的main方法

一、概念 main方法是java程序的入口,每个java应用程序都必须有且仅有一个main方法。 二、深入理解 public static void main(String[] args) {} main方法是被java虚拟机调用的。java虚拟机不在该类中,也不在该类的包中,也不是该类的子类。…

java中main方法的作用是什么_java中main方法是什么

Java中的main方法,是一个java应用程序的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java程序那么必然就要有一个main方法。 main方法的定义格式通常固定如下: (推荐学习:java课程)public class Demo {public static void main(String[] ar…

Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

public static void main(String[] args) {}或者 public static void main(String args[]) {}main方法是我们学习Java语言学习的第一个方法,也是每个java使用者最熟悉的方法,每个Java应用程序都必须有且仅有一个main方法。在eclipse里可以使用输入main,…

“大厂的人一毕业,讲师就多了起来”——但培训行业,早就卷起来了

“大厂的人一毕业,讲师就多了起来”,很多中年产品经理都把去做培训当成一个后备选项,也许,作为十几年前就淌过路的人,可以给你一些信息。 总体来说,今年有个特别的体感,就是产品经理/产品思维/产…