涨知识III - 百度2016校园招聘——移动软件研发工程师 1.列关于线程调度的叙述中,错误的是()。 正确答案 :BE A调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会 B调用线程的yeild()方法,只会使与当前线程相同优先级的线程获得运行机会 C当有比当前线程的优先级高的线程出现时,高优先级线程将抢占CPU并运行 D一个线程由于某些原因进入阻塞状态,会放弃CPU E具有相同优先级的多个线程的调度一定是分时的 F分时调度模型是让所有线程轮流获得CPU使用权 解析:sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较低优先级的线程运行的机会;yeild()方法只会给优先 级相同的或者比自己高的线程运行的机会. 2.以下描述正确的是( ) 正确答案 :A A命令 mknod pipe0 p创建管道,就是创建了一个名为pipe0,类型为p的文件 B根文件系统和子文件系统的文件系统格式必须是相同的 C目录若无写权限,则目录下所有文件禁止写 Dpipe创建的管道的缺点是只限于同祖先进程间通信 解析:创建 FIFO(已命名的管道) mknod Name { p } mknod 命令的第二种形式中,使用了 p 标志来创建 FIFO(已命名的管道) 3.关于mysql_fetch_object说法中,正确的是( ) 正确答案 :D Amysql_fetch_object和mysql_fetch_array一样,没什么区别 Bmysql_fetch_object返回值是个对象,所以在速度上比mysql_fetch_array要慢 Cmysql_fetch_object返回值是个数组,所以在速度上和mysql_fetch_array及mysql_fetch_row差不多 Dmysql_tetch_object返回值是个对象,在速度上和mysql_fetch_array及mysql_fetch_row差不多 注释:mysql_fetch_object() 与 mysql_fetch_array() 类似,只有一点区别 - 返回的是对象而不是数组。间接地,也意味着只能通过字段名来访问数组,而不是偏移量。PHP MySQL 函数定义和用法mysql_fetch_object() 函数从结果集(记录集)中取得一行作为对象。若成功的话,本函数从 mysql_query() 获得一行,并返回一个对象。如果失败或没有更多的行,则返回 false。语法 4.小明设计了如下的学籍管理系统: 已知关系:学籍(学号,学生姓名) PK=学号 成绩(科目号,成绩,学号) PK=科目代码,FK=学号 已有表记录如下,请给出能够插入的成绩记录 正确答案 :BD A(1,99,2) B(5,68,1) C(3,70,3) D(7,45,null) 5.Which of the following statement(s) equal(s) value 1 in C programming language? 正确答案 :BCD Athe return value of main function if program ends normally Breturn (7&1) Cchar *str="microsoft"; return str=="microsoft" Dreturn "microsoft"=="microsoft" ENone of the above 6.关系模式R(a,b,c,d)中关系代数表达式σ3<‘4’(R)等价于SQL语句( ) 正确答案 :C Aselect * from R where d<3 Bselect * from R where Cselect c from R where c<4 Dselect c,d from R having d<2解析:关系模式属于概率论范畴。σ代表选择操作。 σ3代表选择属性列中的第三列,value < 4的那些行。 这里‘4’代表value。不加‘’代表第四列。 7.下面对category描述不正确的是() 正确答案 :B Acategory可以添加新的方法 Bcategory可以删除修改之前的方法 C将类的实现分散到多个不同文件或多个不同框架中 D创建对私有方法的前向引用 8.In C++, which of the following keyword(s) can be used on both a variable and a function? 正确答案 :ACE Astatic Bvirtual Cextern Dinline Econst 解析: 全局: const,只读的全局变量,其值不可修改. static,规定此全局变量只在当前模块(文件)中可见. static const,既是只读的,又是只在当前模块中可见的. 文件: 文件指针可当作一个变量来看,与上面所说类似. 函数: const,返回只读变量的函数. static,规定此函数只在当前模块可见. 类: const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用) static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同 9.以下哪些不是链表的特征? 正确答案 :ACD A数据在内存中一定是连续的 B插入或删除时,无需移动其他元素 C可以随机访问表内的元素 D需要事先估计存储空间 10.强制卸载已安装软件需要的参数( ) 正确答案 :D Arpm -o --nodeps Brpm -I --oldpack Crpm -u --nodeps Drpm -e --nodeps 解析:-e, --erase erase (uninstall) package 11.关于BroadcastReceiver的说法不正确的是 正确答案 :B A是用来接收广播Intent的 B一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收 C对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 D接收者声明的优先级别在< intent-filter >的android:priority属性中声明,数值越大优先级别越高 解析:Android中BroadcastReceiver 广播 ! 当然大家都能接受到 12.IPv6地址占____个字节 正确答案 :D A4 B6 C8 D16 解析:IPv6的地址长度为128b,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。 13.基于哈希的索引和基于树的索引有什么区别? 正确答案 :ABCD Ahash索引仅满足“=”、“IN”和“<=>”查询,不能使用范围查询 Bhash索引无法被用来进行数据的排序操作 C对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用 DHash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高 14.下列的模板说明中,正确的有( ) 正确答案 :AC Atemplate < typename T1, typename T2 > Btemplate < class T1, T2 > Ctemplate < class T1, class T2 > Dtemplate < typename T1; typename T2 > 15.Which Synchronization mechanism(s) is/are used to avoid race conditions among processes/threads in operating systems? 正确答案 :AC 您的答案 :AC AMutex BMailbox CSemaphore DLocal procedure call 解析: Mutex互斥锁 Semaphore信号量 : 可以想象成停车场看门的老大爷,维护一个整形,用来表示资源状况。 16.下面哪些机制可以用于进程间通信? 正确答案 :ABE 您的答案 :ABE ASocket BNamed pipe CNamed event DCritical Section EShared memory FVirtual memory 17.下列选项哪些是正确的 正确答案 :AD A对于unordered_map和map这两个容器,迭代器的有效性皆不受删除操作影响 B对于unordered_map和map这两个容器,迭代器的有效性皆不受插入操作影响 C为了保证代码的异常安全性,应该避免在构造函数中抛异常 D为了保证代码的异常安全性,应该避免在析构函数中抛异常 解析: STL map中有Erase()用来删除元素,删除后迭代器移动到删除元素的下一个,故不受影响。 18.关于多线程和多进程编程,下面描述正确的是(): 正确答案 :ACD 您的答案 :ACD A多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间 B线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护 C线程的通信速度更快,切换更快,因为他们在同一地址空间内 D线程使用公共变量/内存时需要使用同步机制,因为他们在同一地址空间内 E因多线程里,每个子进程有自己的地址空间,因此相互之间通信时,线程不如进程灵活和方便 19.选项中哪些是SQL的DML语句? 正确答案 :BD + A ! Aselect Binsert Calter Ddelete Ecreate 解析: DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言1.CREATE - to create objects in the database 创建2.ALTER - alters the structure of the database 修改3.DROP - delete objects from the database 删除4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL中处理数据等操作统称为数据操纵语言1.SELECT - retrieve data from the a database 查询2.INSERT - insert data into a table 添加3.UPDATE - updates existing data within a table 更新4.DELETE - deletes all records from a table, the space for the records remain 删除5.CALL - call a PL/SQL or Java subprogram6.EXPLAIN PLAN - explain access path to data Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。7.LOCK TABLE - control concurrency 锁,用于控制并发 DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等COMMIT - save work done 提交SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点ROLLBACK - restore database to original since the last COMMIT 回滚SET TRANSACTION - Change transaction options like what rollback segment to use 设置当前事务的特性,它对后面的事务没有影响. 20.NSRunLoop的以下描述错误的是() 正确答案 :C ARunloop并不是由系统自动控制的 B有3类对象可以被run loop监控:sources,timers,observers C线程是默认启动run loop的 DNSTimer可手动添加到新建的NSRunLoop中 解析:线程和 RunLoop 之间是一一对应的,其关系是保存在一个全局的 Dictionary 里。线程刚创建时并没有 RunLoop,如果你不主动获取,那它一直都不会有。RunLoop 的创建是发生在第一次获取时,RunLoop 的销毁是发生在线程结束时。你只能在一个线程的内部获取其 RunLoop(主线程除外) 21.Which statement(s) is(are) correct about thread and process?Select all that apply. 正确答案 :BD AThreads share the same address space of the parent process;Processes share the same address space of the parent process. BChanges to the main thread(cancellation,priority change,etc.) may affect the behavior of the other threads of the process; CChanges to the parent process does not affect child processes. Multiple threads mar cause deadlock,while multiple processes won DThreads can directly communicate with other threads of its process;Processes must use inter-process communication to communicate with sibling processes. ENone of the above. 解析:A:线程与父进程共享相同的地址空间 ; 进程与父进程共享相同的地址空间。 fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如果不是因为exec,内核会给子进程的数据段、堆栈段分配相应的物理空间(至此两者有各自的进程空间,互不影响),而代码段继续共享父进程的物理空间(两者的代码完全相同)。而如果是因为exec,由于两者执行的代码不同,子进程的代码段也会分配单独的物理空间。 完。。。。。