Horizon Reversion,简称HR,不是人力资源的HR哦!
今天的宣讲会主要介绍了他们公司的创始人——余凯,技术大牛吴强、什么畅,还有资深HR小姐姐陶菲雯,都是以前在Google、Facebook、IBM等大公司工作过的人,很厉害,很牛逼~~~
一、宣讲。
他们公司才创立两年,属于起步阶段,很有发展潜质,主要是领头人是人工智能方面比较厉害的人物。为AI而生,采用端云协作方案,运用算法和芯片实现人工智能,主要有三大块:只能驾驶、智能生活、智能安防。得到了很多大佬的投资(雯姐姐说的,不知道是怎么样的),很有市场空间。企业文化是:海盗北斗七星文化,创新、拼搏、协同。
吴强说了一句话:持续学习,世界在变,我的认知已经不够了!
雯姐姐说了一句:Dedicated、hands-on、teamwork是他们公司考量人才的第一标准。
Let‘s sail to the new horizon!!!就结束了今天的宣讲。
然后是Q&A环节,同学问的问题也是很专业的,比如深度学习、FPGA等等,我表示可以走了,但是既然来了还是做个笔试再走吧~~~
二、笔试。
题目不是很难,有很多概念性的题。
转义字符‘\’,给了两个常用的回车‘\r’和换行'\n'。
解释静态变量和全局变量的区别,函数用static修饰之后有什么作用。
定义了一个基类和一个派生类,在主函数中声明了一个指向派生类的基类指针,调用了一个成员函数,问输出结果。主要是看基类是不是虚函数和虚析构函数。
然后是一道特别怪异的题,32位系统大端存储,问输出结果
int p=0x31323334;
char *p1=(char*)p;
printf("%d %d %d %d\n",p[0],p[1],p[2],p[3]);
printf("%c %c %c %c\n",p1[0],p1[1],p1[2],p1[3]);有点没看懂这个题的意思
选两个关键词解释定义、区别、如何避免等。有“信号量与互斥量”,“资源共享和资源保护”,“死锁”,“僵尸进程”。
信号量:那是多线程同步用的,一个线程完成了某一个动作就通过信号告诉别的线程,别的线程再进行某些动作。
互斥量:这是多线程互斥用的,比如说,一个线程占用了某一个资源,那么别的线程就无法访问,知道这个线程离开,其他的线程才开始可以利用这个资源。
信号量与互斥量之间的区别:
1. 互斥量用于线程的互斥,信号线用于线程的同步。
2. 互斥量值只能为0/1,信号量值可以为非负整数。 3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
死锁的发生必须具备以下四个必要条件:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是 使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)
c++多态的实现方式,使用场景。
虚函数实现。多态性的本质是将子类类型的指针赋给父类类型的指针。
顺便提一下,一直有点搞不清楚重载和覆盖,虚函数总是在派生类中被改写,这种改写称为覆盖(override)。
override是指派生类重写基类的虚函数,重写的函数必须有一致的参数表和返回值。
overload(重载)是指编写一个与已有函数同名但是参数列表不同的函数。重载不是一种面向对象的编程,只是一种语法规则,重载和多态没有什么直接关系。
在你的开发过程中遇到哪三种陷进,你是如何避免的?
什么时候要用指针?
c的内存分配方式
编程:
求数组的平均值。
由数组A的值计算出数组B,B[i]=A[j]的乘积,其中j≠i。就是B中的第i项就是A中除去第i项剩下的元素的乘积。
圆圈中最后剩下的数字。
做完第一感觉就是:回去把c++的书再看一遍!!!!!