笔试面试的那些事儿....

本文总结了一次C/C++移动搜索开发实习生的面试经历,包括排序算法对比、特殊数组二分查找、线程安全内存池设计、数据库系统设计、大规模URL去重等算法与系统设计题目的解答思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2012年10月30日,晴,宜搜【C/C++移动搜索开发实习生】面试

前面题目很简单,后面三道算法设计题不会做....

简答题一:

列出各种排序算法,其复杂度以及稳定性。

整理答案:

算法名称-时间复杂度-空间复杂度-稳定性

插入排序-O(n*n)-O(1)-是

冒泡排序-O(n*n)-O(1)-是

简单选择排序-O(n*n)-O(1)-否

希尔排序- -O(1)-否

快速排序-O(n*log2n)-O(log2n)-否

堆排序-O(n*long2n)-O(1)-否

二路归并排序-O(n*long2n)-O(1)-是

基数排序-O(d(n+r))-O(r)-是

算法题一:

在排列好的数组中查找某一个数可以采用二分查找算法,现在有一个数组,其中从某一个数开始循环有序,例如12,14,18,22,24,1,3,5,9,从1开始循环有序,设计算法实现在这种数组中查找某一个数,要求时间复杂度低于O(n)。

这里有解答:

http://blog.youkuaiyun.com/fanzy618/article/details/5274998

算法题二:

设计实现一个多线程安全的内存池pool,要求这个内存池提供两个功能,分配及释放内存:

void* pool::malloc(unsinged int size);

void pool::free(void *p);

说明算法,数据结构,必要的话可以画图说明。

4篇博客可以解决:

Linux多线程同步:

博客一

博客二

C++线程安全内存池:

博客三

博客四

系统设计题:

这个题要求设计一个数据库系统,实现同时更新读取插入删除等功能,题目不记得了,反正是一点也不会....

面试题一:

网络爬虫从网络上扒下来大量的URL,存储在一个文件中,文件大小为2G,可用内存只有60M,设计算法实现对这2G文件中的URL进行去重。

整理解答:

方案一(外存排序法):

分多次读取原文件,每次将内存读满,然后进行排序,排好序后再将这些url按顺序存储到外寸成为一个小文件,然后再次读取url再排序再存储,直到将原来大文件中的url全部读取完后就得到了大量已经排序好的小文件,最后对这些小文件进行归并去重。

方案二(文件hasn散列法):

依次读取原文件中的url,设计一个适当的hash散列函数和一系列的函数值区间,求出这些url的散列值,降落在同一个散列区间内的url保存到外存的同一个文件中,原文件读完后将得到一系列包含hash值处在统一区间的url的小文件,这样就保证了所有含有重复的url都在一个文件中。

这里有两种去重方法:

1,在对url进行hasn散列时去重,即求出url的hasn函数值后在hasn表中查找是否已经存在了,是的话表示重复就丢去,否则就存储。

2,当将原来大文件分割成小文件后,对每一个小文件分别进行去重处理,可以将小文件里的url读入内存排序去重,hash去重等等,最后存储回去。

去重后将这些小文件合起来即可。


面试题二:

MySQL数据库内部实现数据结构是什么?

这里有详细解答

面试题三:

操作系统内存分配算法是什么?

整理解答:

1,连续内存分配包括:

(1) 单一连续分配

(2) 个固定分区分配

(3) 动态分区分配,这里面又包括以下几个适应算法:

首次适应,最佳适应,最大适应(最差适应),邻近适应(循环适应)

2,非连续内存分配包括:

(1) 分页管理方式

(2) 分段管理方式

(3) 段页式个管理方式

具体内容看这里,或者看考研指导书操作系统第三章内存管理。


面试结果:失败被刷了,笔试题中内存池和数据库设计没做好,一面TopK算法和海量数据去重算法不熟悉,二面C/C++线程同步不熟悉,三面内存分配算法不熟悉,写代码内层循环中忘了加上结尾字符判断会导致死循环。

结论:数据结构算法,海量数据处理,计算机基础,多线程编程需要加强。

内容概要:本文档提供了关于“微型车间生产线的设计与生产数据采集试验研究”的毕业设计复现代码,涵盖从论文结构生成、机械结构设计、PLC控制系统设计、生产数据采集与分析系统、有限元分析、进度管理、文献管理和论文排版系统的完整实现。通过Python代码和API调用,详细展示了各个模块的功能实现和相互协作。例如,利用SolidWorks API设计机械结构,通过PLC控制系统模拟生产流程,使用数据分析工具进行生产数据的采集和异常检测,以及利用进度管理系统规划项目时间表。 适合人群:具有机械工程、自动化控制或计算机编程基础的学生或研究人员,尤其是从事智能制造领域相关工作的人员。 使用场景及目标:①帮助学生或研究人员快速搭建和理解微型车间生产线的设计与实现;②提供完整的代码框架,便于修改和扩展以适应不同的应用场景;③作为教学或科研项目的参考资料,用于学习和研究智能制造技术。 阅读建议:此资源不仅包含详细的代码实现,还涉及多个学科领域的知识,如机械设计、电气控制、数据分析等。因此,在学习过程中,建议读者结合实际操作,逐步理解每个模块的功能和原理,并尝试调整参数以观察不同设置下的系统表现。同时,可以参考提供的文献资料,深入研究相关理论和技术背景。
本次的学生体质健康信息管理网站,按照用户的角色可以分为教师与学生,后台设置管理员角色来对学生的信息进行管理。,设计如下: 1、后台管理系统 后台管理系统主要是为该系统的管理员提供信息管理服务的系统,具体包括的功能模块如下: (1)管理员信息管理 (2)教师信息管理 (3)学生信息管理 (4)健康信息统计(图形化进行健康,亚健康等学生的信息数量统计) 2、教师角色的功能模块设计 教师角色所需要的功能模块主要包括了如下的一些内容: (1)个人资料修改 (2)学生体质健康管理:录入相关数据,包括但不限于身高、体重、肺活量、视力等生理指标以及运动能力、身体成分、骨密度等健康指标,并且设置健康,亚健康状态 (3)学生健康建议:根据体质信息,进行学生健康的建议 (4)健康预警:对健康出问题的学生,进行健康预警 (5)饮食和锻炼情况管理,查看 3、学生角色 学生角色可以通过该信息网站看到个人的基本信息,能够看到教师给与学生的健康建议等,功能模块设计如下: (1)个人资料修改 (2)我的健康建议查看 (3)我的健康预警 (4)饮食和锻炼情况管理,记录平时的饮食和锻炼情况 完整前后端源码,部署后可正常运行! 环境说明 开发语言:Java后端 框架:ssm,mybatis JDK版本:JDK1.8+ 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:eclipse/idea Maven包:Maven3.3+ 部署容器:tomcat7.5+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值