面经(一)广州保伦电子有限公司校招宣讲面经

前言

本章主要讲述我参加广州保伦有限公司的学校宣讲并笔试的经历
ps:刚刚搞完,就马不停蹄的回来写面经惹~

一、经历概述

  • 宣讲前:

在得知该公司会来我们学校进行宣讲时,我看到有招聘Java开发职位,就马上决定参加该公司的宣讲。因为我们学校是最后一次宣讲的地方,自己心里也知道人肯定是招的差不多了,但是还是想去尝试一下,打算做一次面试的经验。在该公司还未来学校之前,我就有网上查询该公司的简介,评价等等相关信息,包括该公司招聘的java开发信息,大致看了一下,大多技术栈我都有了解并在自己项目中使用,所以我觉得我简历应该还算符合的。

因为第一次参加宣讲,面试什么的,难免事前会有紧张,心脏蹦蹦的。然后就准备了一段面试的自我介绍包括人生规划,练了老久,额,结果最后我根本就没有面试,哈哈哈,还是挺遗憾的。因为我想试试我能不能完整并流畅的说出来,锻炼一下自己的能力,看看说话时会不会紧张之类的,又或者和技术人员进行交流沟通,看看自己有哪些知识的盲区,面试结束后可以深抓这一点,以免之后面试会碰到。

  • 宣讲时

进行宣讲的产品经理小姐姐长得非常漂亮,说话也超级温柔der~,穿着高跟鞋气质也非常好吼!!!.喜欢。介绍逻辑也一点毛病都没有,讲的非常好。她首先是播放了公司介绍的视频之类的,然后依次递进从职位选择,薪酬计算、福利各方面介绍。在介绍过程中,我通过询问了解到研发人员已经满了,只剩下测试和硬件开发岗位。虽然很遗憾,但是我仍想试试,我必须是坚持我的java开发了。

  • 笔试

宣讲结束后就是面试环节,其中选择销售的占大多数,通常是以直接面试,一面、二面这样的形式。
然后其次有三个选择会计的,需要进行笔试
然后还有一个我,我一个人选择的研发…哈哈哈 尴尬,需要笔试。
因为这场宣讲是在我们商学院进行的宣讲,我选择研发岗位 哈哈哈.

因为不招研发岗位了,我又不想换其他岗位,所以在我的再三请求下,itc的营销推广经理仍旧是给了我一套笔试题做,itc的营销推广经理人也超级好der ~,虽然该公司已经不再招研发人员了,但是还是让我写了笔试试卷。这个时候别的同学都已经面试完了,最后只剩下我一个人了,我一个人孤苦伶仃的在写试卷。对于试卷的难度,我感觉比较简单,大多是基础问题,但是!!! 我不会写,哈哈哈,能写的尽量写了。

就酱紫,笔试完了,我把简历给了itc的营销推广经理,他说会帮我把这个给他们的技术总监的,哇!听到真的超级感激,连忙感谢,其实我一点希望也不抱的,我本来仅仅是想获取一次笔试或者面试的经验。但是听到这个也是超级开心啦!嘻嘻嘻。

二、笔试题目

  • 自我评价:因为是硬件公司,所以硬件相关的知识比较多。个人感觉比较简单,很多基础知识,但是!!! 看起来简单我也不会写哈哈哈。其中所有的选择题都是我之前在牛客网刷到过的,大多是腾讯曾经的面试题,但是我都忘记答案了,只对题目有印象…尴尬 5555~。所以我把题目放上来了,顺便把答案也做一下

  • 附件干货:软件开发笔试题

三、软件笔试题

一、问答题

1、什么是子网掩码、什么是网关。**
  • 子网掩码就是用来标识IP中32位2进制中有多少位属于网络地址,另一功能是用来划分子网。

  • 网关(Gateway):将两个使用不同协议的网络段连接在一起的设备。

    1)它的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换。
    2)举个例子,一个商业内部局域网就常常需要通过网关发送电子邮件到Internet的相关地址。

顺带:

  • DNS(Domain Name Server),即域名解析服务器。DNS的作用:域名便于人们记忆,但机器之间只能相互认识IP地址,因此通过DNS可以把域名转换为IP地址。
2、TCP/IP通信建立的过程怎样,TCP和UDP有什么区别。

1)连接方面区别:
TCP面向连接(如打电话要先拨号建立连接)。
UDP是无连接的,即发送数据之前不需要建立连接。

2)安全方面的区别:
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
UDP尽最大努力交付,即不保证可靠交付。

3)传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。

4)连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信

3、用什么函数开启新进程、线程(不限语言)

CreateProcess函数作为win32的一个API用来运行一个新程序。 老的接口WinExec和LoadModule函数依旧可用,但是它们同样通过调用CreateProcess函数实现。

4、找出一个整数数组中,第二小的数(不限语言)
  • 网上写的是C语言写的 我不会,大家自己去找吧…
  • 我用Java瞎写了一个,思路是先从小到大排序,然后取第二个值
5、const 有什么用途?(请至少说明两种)

1)定义const常量
2)const可以修饰函数的参数、返回值、定义体。
被const修饰的东西都受到强制保护,可以预防意外的变动,提高程序的健壮性。

6、程序的局部变量存在于( 栈 )中,全局变量存在于( 静态区 )中,动态申请数据存在于( 堆 )中。
7、 简述你所开发过自定义控件, 谈谈它的功能与基本实现.若没有,请简要描述下你所接触的第三方控件实现
  • 不懂,不会写
8、写一函数int fun(char *p)推断一字符串是否为回文(对称),是返回1,不是返回0,出错返回-1.
  • 我不会
  • 摘自别人的
int fun(char *p) {
  char *q=p;
  while(p!='\0')
    q++;
 while(p!=q)
{
  if(*p!=*q)
   return 0;
 p++;
q--;
}
return 1;
}
9、产生死锁的原因主要是?

资源竞争和进程间的执行顺序不合理

10、进程间通信有哪些?

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。

IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。

MARK:

  • 1)管道:通常指无名管道,是 UNIX 系统IPC最古老的形式。

    特点:1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。
    2.它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。
    3.它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。

  • 2)FIFO:也称为命名管道,它是一种文件类型。

    特点:1.FIFO可以在无关的进程之间交换数据,与无名管道不同。
    2.FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中。

  • 3)消息队列:是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。

    特点:1.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
    2.消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
    3.消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。

  • 4)信号量(semaphore):与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。
    特点:
    1.信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。
    2.信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。
    3.每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数。
    4.支持信号量组。

  • 5)共享内存(Shared Memory):指两个或多个进程共享一个给定的存储区。
    特点:1.共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。
    2.因为多个进程可以同时操作,所以需要进行同步。
    3.信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。

11、软件开发一般有哪几个阶段

软件开发一般分为五个阶段:

  • 1.问题的定义及规划:
    此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

  • 2.需求分析:
    在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

  • 3.软件设计
    此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

  • 4.程序编码
    此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。

  • 5.软件测试
    在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。

12、二级指针怎么声明(不限语言)
  • 我不会指针…
13、linux基础命令

(1)获取kernel版本信息的命令是什么?

  • 不知道

(2)新建文件夹命令是什么?
mkdir

(3)查找文件的命令是什么?
find -name

(4)拷贝的命令是什么?
cp

14、当你遇到一个开发难题的时候,你会通过哪些途径寻求解决方法,说明下原因。
  • 我都答的不怎么好,主要赶时间
    我觉得应该可以从个人和他人还有网络搜索三个方面上依次进行回答吧

二、不定项选择题

  • 这里所有题目其实我之前都有在牛客网刷题刷到过
    但无奈记性不好,知道是牛客网的题目,但是不记得答案了
    以前还看过解析…

1、 面向对象的语言具有继承性、多态性和( A ) 。

A) 封装性 B) 拆箱性 C) 封闭性 D) 逻辑性

2、构造函数何时被调用?( A )

A) 创建对象时 B)类定义时
C)使用对象的方法时 D) 使用对象的属性时

【解析】:每个实例创建时会被调用
类定义并不涉及创建类,也不需要分配空间,仅定义数据类型, 因此无需调用构造函数
能调用对象方法, 说明类的构建已经完成; 同理使用变量也是.

3、下列选项中,( C )是引用类型。

A)enum类型 B)struct类型
C)string类型 D)int类型

4、下列关于构造函数的描述正确的是( C )

A)构造函数可以声明返回类型。
B)构造函数不可以用private修饰
C)构造函数必须与类名相同
D)构造函数不能带参数

5、有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?( BCD )

A. 1
B. 2
C. 3
D. 4

【解析】++ 和 += 都不是原子操作,所有都可能被中断,结果就是 2 ~ 4 都可以

6、进程进入等待状态有哪几种方式?(不知道 )

A. CPU调度给优先级更高的线程
B. 阻塞的线程获得资源或者信号
C. 在时间片轮转的情况下,如果时间片到了
D. 获得spinlock未果

【解析】好像没有正确答案

7、递归函数最终会结束,那么这个函数一定?( B )

A. 使用了局部变量
B. 有一个分支不调用自身
C. 使用了全局变量或者使用了一个或多个参数
D. 没有循环调用

8、如果进栈序列为e1,e2,e3,e4,e5,则可能的出栈序列是( B )

A、e3、e1、e4、e2、e5
B、e5、e2、e4、e3、e1
C、e3、e4、e1、e2、e5
D、以上都有可能

[解析] 根据栈先进后出的特点可知e1肯定是最后出栈的,因此正确答案为选项B。

三、思维题:

1、阐述下对目前新型技术的看法和理解,例如人工智能、大数据、5G,或者论坛等等(任何新型科技皆可,发散性思维阐述下)。

  • 自己想一下就可以了,我这个题目因为整个教室只有我一个人的关系,hr也赶时间
    我就写了一句话:人工智能Python脚本是大势所趋 哈哈哈!!!

四、逻辑推理题:

1、如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

  • 这个题目很简单,稍微想一下就知道了. 问题主要出现在1公升水上面,只要能够拿到1公升水就可以了
    因为3+1 = 4 ;5 -1 = 4;

所以是有两种方法的,我只写了一种方法

  • 方法一:2*3 - 5 = 1
    即首先装满3公升的桶子,把他倒入5公升的提桶,此时5公升提桶里已有3公升水。
    然后再装满3公升的桶子倒满5公升提桶,此时5公升提桶已满,而3公升提桶中正好剩下1公升水。
    之后把5公升提桶里的水倒掉,把3公升里面存在的1公升水倒入5公升提桶。
    最后装满3公升提桶.
    即 3 + 1 = 4公升

  • 方法二:5 - 3 = 2 , 2 + 1 = 3 , 5 - 1 = 4
    首先装满5公升的提桶,把他倒满3公升的提桶,此时3公升提桶已满,5公升提桶中剩下2公升水
    然后把3公升提桶的水倒掉,把5公升提桶里面的2公升水倒入,此时3公升提桶里面有2公升水,正好差1公升水则满
    之后再次把5公升提桶的水装满,然后倒满3公升提桶,此时5公升提桶里正好剩下了4公升水。
    即 5 - 1 = 4公升

    2、教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数
    甲说:“我猜不出”
    乙说:“我猜不出”
    甲说:“我猜到了”
    乙说:“我也猜到了”
    问这两个数是多少

  • 这题我没写,随便蒙了个4和6 ,与结果就差一点点 哈哈哈
    答案:这两个数为3和4,或是3和6

  • 贴上网上答案:比较长

甲第一次说不知道,可以推断出甲得到的数字组合可能性为两个以上,而4(2 2)和5(2 3)两个可能将被排除。

乙第一次说不知道是一大关键。由于数字限制在2到9的自然数,那么如果组合中的数字是唯一组合的积,乙得到这些数就没理由说不知道。比如8、15、21都只有唯一组合。

如果有人看不懂,我举个例,例如甲得到数字8,8有三种组合,2 6,3 5,4 4,因为3和5是唯一组合,所以乙说不知道的时候,甲可以把3 5的可能性排除。但是乙得12(34.26)和16(28.34)都有两种以上组合的可能性,不是唯一组合,所以甲不能排除。此例中我们也能看出假若甲得到8这个数,因为26和44两组合不能排除而没法判断,也就不会在第二次说话中说“我猜到了”,所以和为8是不符合条件的。

在上一点中,有个推论。因为乙在第一次无法分辨,所以这两个数中数必须能且只能分解成两个因子且这两个因子组合不能重复(因为题目为两的数组合),分解出来的两个因子都能和另一个数(设为B)相乘不超过9,从而形成让乙看来有另外组合的可能性。设这两个因子为A1、A2,A=A1A2(A1,A2属于自然数且大于1,A1举个例子,两数为5和6,乙得数为30。5是质数,6可分解2和3两个分因子,但因为25和35都超过9不可能形成310和215而被否定,所以如果乙得数为30时,5和6是唯一组合以至于直接猜到。而如果数字为2和6,乙得数为12,则因为2和6的两个分因子组合相乘(22和2*3)都不超过9而形成两种以上组合的可能,乙才会无法直接猜到。

其实符合此条件的A只有4(22)、6(23)、8(24)、9(33)四个数字而已。而B必小于5,因为5*2已经大于9。当B=4时,A1、A2必小于3,所以A只能为4,但A B=8,上面已经有所讨论。所以B只能是2和3。而符合以上条件时,甲得的数将小于等于12。此推理能排除很多组合,后面分析将大量用到。

然后是乙根据自己的积的可能去推断甲可能得到什么数字,从甲能在乙说不知道的情况下得到的可能去排除自己推测中不符合条件的组合。从乙说猜到的情况来看,乙必须在分析后得到唯一组合。若排除后还留下两个以上可能性将不符合乙能猜到的条件。不明白的看我后面的具体分析。
由于甲的数是和,4.5.8我们就不说了,分析其他可能:

假若甲数为6,那么甲推测可能的组合为2 4,3 3两种可能,所以甲第一次会说不知道,而乙在甲得6的情况下只会得到8(24)和9(33)。在前面我们分析过如果乙得8和9没理由第一次就说不知道。所以甲数为6不符合要求
若甲得到7,那么甲可能的组合为2 5.3 4两种可能,而乙可能得到10和12,乙得10没理由说不知道,所以讨论乙得12的可能性。甲因为听到乙说不知道,从而否定了25的可能,可以肯定他猜到了是34。接下来比较复杂,乙得12时得到26.34两种组合,那么乙就会猜甲得到的是8和7。甲得8在之前已经讨论过不可行,所以乙可以排除掉26的可能性。那么剩下的34组合正好符合各方面的推测。3和4为正解之一。

假若甲得到9,那么甲可能的组合为2 7.3 6.4 5三种,根据之前的推理甲可以排除掉27和45的组合,只有36符合甲能猜到的条件,那么乙将会得到18。积为18有29.36两种组合,所以乙将猜测甲会得到11和9两个数字。分析乙猜甲的数为11,组合为29.38.47.56四种,以我上面的推论可以否定掉47和56,但还留下了29和38,导致甲无法猜出,11不符合甲能猜出的条件,乙将猜测甲数为9,得到3和6的组合。符合各项条件。3和6为正解之一。
假若甲得到10,组合为2 8,3 7,4 6,5 5四种。37,55组合可以排除,但28和46无法排除,甲无法猜出,甲得10不符合。

若甲得11,组合为2 9.3 8.4 7.5 6四种,可排除的是47和56,29和28无法排除,不符合。
若甲得12,组合为3 9,4 8,5 7,6 6四种,这四种均为唯一组合,乙能直接猜到,不符合。

结论,这两个数为3和4,或是3和6

发布了79 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Makasa/article/details/103035387