1、用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。
分析:由于可以把任何类型的指针赋给void类型的指针,这个函数主要是实现各种数据类型的拷贝。
3、有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。
木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。
当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。
编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
4、给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度O(1),时间复杂度为O(n)。
5、在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。
6、系统有很多任务,任务之间有依赖,比如B依赖于A,则A执行完后B才能执行
(1)不考虑系统并行性,设计一个函数(Task *Ptask,int Task_num)不考虑并行度,最快的方法完成所有任务。
(2)考虑并行度,怎么设计
7、解释下面ptr含义和不同
//ptr是一个指向double类型的指针,ptr的值可以改变,ptr所指向的value的值也可以改变
//ptr是一个指向const double类型的指针,ptr的值可以改变,ptr所指向的value的值不可以改变
//ptr是一个指向double类型的指针,ptr的值不可以改变,ptr所指向的value的值可以改变
//ptr是一个指向const double类型的指针,ptr的值不可以改变,ptr所指向的value的值也不可以改变
71、找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符(只要听过编辑距离,知道往动态规划上想,很快就可以找到解法)。
72、编程实现memcopy,注意考虑目标内存空间和源空间重叠的时候。
73、实现简单的一个查找二叉树的深度的函数。
74、进程和线程的区别。
75、一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值。
76、链表倒数第n个元素。
77、有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4。(如果返回0的概率为0.3而返回1的概率为0.7呢)。
78、有8个球,其中有7个球的质量相同,另一个与其他球的质量不同(且不知道是比其他球重还是轻),请问在最坏的情况下,最少需要多少次就能找出这个不同质量的球。
79、有一个数组a,设有一个值n。在数组中找到两个元素a[i]和a[j],使得a[i]+a[j]等于n,求出所有满足以上条件的i和j。
80、1万个元素的数组,90%的元素都是1到100的数,10%的元素是101--10000的数,如何高效排序。
81、用简单语句描述数据库操作的步骤 。
82、写出TCP/IP的四层结构。
83、什么是MVC结构,并描述各层结构的作用 。
84、字母a-z,数字0-9,现需要其中任意3个作为密码,请输出所有可能组合。(伪码\C\C++\JAVA)
点评:如本文评论下第198楼所述,即从26+10=36个不同字符中选取3个字符的组合,用递归及非递归两种方法,可以参照以下链接:
(从n个数中选取m个数的组合数)。
85、实现字符串反转函数。
86、给定字符函数a、插入 b、删除 c、替换
例如字符串A=acegf,字符串B=adef,最少需要2步操作将A转换为B,
即第一步将c替换为d,第二步将g删除;
1).请问将字符串A=gumbo转换为字符串B=gambol,最少需要几步操作,列出如何操作
2).任意字符串A和字符串B,如何计算最小操作次数,计算思路,并给出递归公式
3).实现代码(注意代码风格与效率)
应用场景:这是一种用户登录验证手段,例如银行登录系统,这个设备显示6位数字,每60秒变一次,再经过服务器认证,通过则允许登录。问How to design this system?
1).系统设计思路?服务器端为何能有效认证动态密码的正确性?
2).如果是千万量级永固,给出系统设计图示或说明,要求子功能模块划分清晰,给出关键的数据结构或数据库表结构。
考虑用户量级的影响和扩展性,用户密码的随机性等,如果设计系统以支持这几个因素.
3).系统算法升级时,服务器端和设备端可能都要有所修改,如何设计系统,能够使得升级过程(包括可能的设备替换或重设)尽量平滑?
89、通过后序、中序求前序 。
90、重写与重载的区别 。
91、判断两个数组中是否有相同的数字 。
92、1000瓶水中找 出有毒的那瓶,毒性一周后发作,一周内最少需要多少只老鼠 。
93、系统设计 email客户端,支持多账户和pop3等协议
1). 请写出可能的至少5个用例;
2). 使用sqlite存储帐户、已收信息、已发信息、附件、草稿,请设计合理的表结构
3). pop3等协议等接口已完成,请给出email客户端的模块设计图。
94、百度地图里的路线查询:给定两个站点,如果没有直达的路线,如何找到换乘次数最少的路线?
点评:蚂蚁算法?还是广搜,或A*算法?
95、有一箱苹果,3个一包还剩2个,5个一包还剩3个,7个一包还剩2个,求N个满足以上条件的苹果个数。
96、用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。
97、假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」,然后将每段的数据进行乱序(即:段内数据乱序),形成一个新数组。请写一个算法,将所有数据从小到大进行排序,并说明时间复杂度。
思路一、如@四万万网友所说:维护一个20个元素大小的小根堆,然后排序,每次pop取出小根堆上最小的一个元素(log20),然后继续遍历原始数组后续的(N-20)个元素,总共pop (N-20)次20个元素小根堆的log20的调整操作。
思路二@飘零虾、如果原数组是a[],那么a[i+20]>=a[i]恒成立(因为每段乱序区间都是小于20的,那么向后取20,必然是更大的区间的元素)。
共计20个数组,每个数组100亿/20 个元素「注:这5亿个元素已经有序,不需要再排序」,且这20个数组都是有序的,然后对这20个数组进行归并,每次归并20个元素。时间复杂度跟上述思路一一样,也是N*logK(N=100亿,K=20)。
此外,读者@木叶漂舟直接按每组20个排序,将排好的20个与前20个调整拼接,调整两端接头处的元素,写了个简单地demo:。不过,复杂度有点高,目前来说中规中矩的思路还是如上文中@四万万网友 所说思路一「@张玮-marihees按照思路一:,写了一份代码:,欢迎查看」。
98、一在线推送服务,同时为10万个用户提供服务,对于每个用户服务从10万首歌的曲库中为他们随机选择一首,同一用户不能推送重复的,设计方案,内存尽可能小,写出数据结构与算法。
99、来自《编程之美》的概率题:一个桶里面有白球、黑球各100个,现在按下述规则取球:的
i 、每次从通里面拿出来两个球;
ii、如果取出的是两个同色的求,就再放入一个黑球;
ii、如果取出的是两个异色的求,就再放入一个白球。
问:最后桶里面只剩下一个黑球的概率是多少?
100、给你一个自然数N,求[6,N]之内的所有素数中,两两之和为偶数的那些偶数。
101、相似度计算用于衡量对象之间的相似程度,在数据挖掘,自然语言处理中是一个基础性计算,在广告检索服务中往往也会判断网民检索Query和Adword的主题相似度,假设Query或者Adword的主题属性定义为一个长度为10000的浮点数组Pr[10000](称之为主题概率数组),其中Pr[i]表示Query或者Adword属于主题ID为I的概率,而Query和Adword的相似度简化定义为两者主题概率数组的内积:即sim(Query,Adword)=sum(QueryPr[i]*AdwordPr,在实际应用场景中,由于大多数主题的概率都为0,所以主题概率数组往往比较稀疏,在实现时会以一个紧凑型数组topic_info_t[]的方式保存,其中100<=数组大小<=1000,并按照topic_id递增排列,0<=topic_id<10000,0
102、动态链接库和静态链接库分别有什么优缺点?
103、轮询任务调度与抢占式任务调度的区别?
106、长度为N(N很大)的字符串,求这个字符串里的最长回文子串。
107、数轴上从左到右有n个点a[0],a[1]...a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。
108、三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组。
点评:荷兰国旗问题,参见此文第8小节:。
点评:手写字符串处理相关函数是面试中极为常见的一类题型。
功能:从字符串str1中查找是否有字符串str2,
-如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。
点评:手写常见字符串处理函数是面试官很喜欢考的一类题型。
113、数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
114、求二叉树的面积(高乘宽),高为二叉树根到叶子节点的最大距离,宽慰二叉树最多的节点数。
115、给了一个百度地图的截图,对于地图上的某一点,需要在地图上标注该点的信息,将信息抽象成一个矩形,可以在该点的左边标记,也可以在该点右边标记。但是任意两点标记后的矩形是不能有覆盖的,否则删除其中一个点
问题1,现给一固定区域,有n个点,设计一个算法,要求标记足够多的点
问题2,当点足够多时候,算法会遇到性能瓶颈,需要对算法重新优化。
116、深度神经网络目前有哪些成功的应用?简述原因。
117、列举不同进程共享数据的方式(至少三种)。
118、对于N个样本,每个样本为D维向量,采用欧式距离使用KNN做类预测。
1).给出预测时间复杂度。
2).当N很大时,有哪些方法可以降低复杂度?
3).k取值的大小对预测方差和偏差有何影响?
119、给出一个数据A=,打印出该数值元素的所有组合。
120、有这样一个数组A,大小为n,相邻元素差的绝对值都是1,如A={4,5,6,5,6,7,8,9,10,9}。现在给定数组A和目标整数t,请找到t在数组中的位置。
121、在平面上有一组间距为d的平行线,将一根长度为l(l
122、关于K-means聚类算法,请回答以下问题:
123、简述计算机的存储系统分为哪几个层次,为什么这样的分层能够提高程序的执行效率。
124、浮点数在计算中如何表示,如何对浮点数判等。
125、简述TCP与UDP协议的差别,两者与HTTP的关系。并列举HTTP的方法,以及常见的返回状态码。
127、给定一个字符串,(1,(2,3),(4,(5,6),7)),使它变为(1,2,3,4,5,6,7),设计一个算法消除其中嵌套的括号。(c/c++)
128、使用C语言实现htonl(将long性转为网络字节码),不使用系统自带函数。
129、面向对象是一种思想,使用C语言来实现下列问题。
1). 如何定义一个类?
2). 如何创建以及销毁对象?
3). 如何实现类的继承?
130、数组A中任意两个相邻元素大小相差1,在其中查找某个数。
数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
这道题目最差时间复杂度也是O(N),所以重点在于能不能找到一种尽可能减少比较次数的方法。@jefflee 的方法就很不错,但感觉应该还可以继续优化?
131、给定n个元素,打印出全排列
比如输入1 2 3,打印出6种排列情况
132、有两个不同的数在1-30之间(不包括1和30),甲知道两数之和,乙知道两数之积。乙问甲知道是那两个数吗?甲说不知道。甲同样反问乙,乙也说不知道。然后乙说我知道了,再然后甲说我知道了。请问是哪两个数?
解析:前提是甲不能能通过两数之和确定具体哪两个数,乙也不能通过两数之积判断出具体哪两个数。
然后当乙知道甲也不能确定的时候,乙却可以快速判断出来说明甲心里已经有了几个选项,然后根据甲不确定就可以排除掉不正确的。然后甲也是如此。
“刘德华”的切词结果为“刘德华”;
“刘德华电影”的切词结果为“刘德华 电影”;
“刘德华最新电影”的切词结果为“刘德华 最新 电影”;
“刘德华电影下载”的切词结果为“刘德华 电影 下载”;
根据以上切词结果,刘德华”是“刘德华电影”,“刘德华最新电影”, “刘德华电影下载”的子query;
“刘德华电影”是“刘德华最新电影”, “刘德华电影下载”的子query;
但是,“刘德华电影下载”和“刘德华最新电影”互相不是对方的子query。
现有亿级的用户query,并且知道每个query的查询次数,要求:
(1)列出一个query的全部子query,写出C语言实现。
(2) query中的不同term对这个query的重要性不同的,例如“刘德华 电影 下载”中“刘德华”和“电影”的重要性比“下载”重要,因为:“刘德华 电影“所表达的查询需求,与”刘德华 下载“或者”电影 下载“相比,更接近原query的需求。根据(1)中的统计的子query数据,请给出一种思路,来计算一个query中的所有子query的重要性排序。
如果认为子query数据的信息不够充分,请给出还需要哪些信息,以及获得这些信息的途径,给出算法思路描述,必要的符号和推理公式即可。
134、给定多个集合,求他们的笛卡尔积。
要求时间和空间复杂度尽可能低,不要使用递归,不要使用类似树的非递归实现。
135、一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程。
136、假设张三的mp3里有1000首歌,现在希望设计一种随机算法来随机播放。与普通随机模式不同的是,张三希望每首歌被随机到的改了吧是与一首歌的豆瓣评分(0~10分)成正比的,如朴树的《平凡之路》评分为8.9分,逃跑计划的《夜空中最亮的星》评分为9.5分,则希望听《平凡之路》的概率与《夜空中最亮的星》的概率比为89:95,。现在我们已知这1000首歌的豆瓣评分:
1).请设计一种随机算法来满足张三的需求。
2).请写代码实现自己的算法。
137、给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。
138[6,N]之内的所有素数中,两两之和为偶数的那些偶数
其中N是个自然数,请给出算法描述,代码与时间复杂度分析。
139在由N个正整数的集合S中,找出最大元素C,满足C=A + B
其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析。
140、请列举出你熟悉的知名论坛/社区的名称、URL、优势以及原因。
141、如何提高老年人和儿童使用手机百度的频率?
142、百度卫士新推出看片保护(观看视频时防止病毒侵害)功能, 请针对该功能设计一个具体的运营规划。
145、什么是 “use strict”? 使用它的好处和坏处是什么?
146、写一段简单的正则表达式,匹配并取出字符串””中的域名部分(注:域名部分非固定)
147、用原生javascript编写程序:创建一个ul无序列表元素添加到body中,ul下包含5个li元素,每个li元素包含一个text类型元素,text元素内容可自定义。
148、假设有一个基础对象叫“动物”,拥有以下属性:腿的数量、是否有尾巴,有另外一个对象叫“猫”,拥有“动物”对象的属性,并增加一个属性为:动物名称,再增加一个方法,返回动物名称+腿的数量+是否有尾巴的描述,请使用javascript原型链继承来创建以上2个对象。
149、请解释tcp连接建立过程,如果可能,请结合相应系统调用函数解释交互过程。
150、给定一个整数的数组,相邻的数不能同时选,求从该数组选取若干整数,使得他们的和最大,要求只能使用o(1)的空间复杂度。要求给出伪码。
151、二分查找是常用的编程方法,请用完整代码实现该函数(不许调用库函数)
152、对于Edit控件,你如何抓防止密码框内容被抓取?
153、DNS欺骗的方式有哪些?
154、列举两种应用层中简单的跨进程DLL注入的方法。
155、假设有如下所示的一个数字金字塔,现在,要求写一个程序来查找从顶点到底部任意处结束的路径,使路径经过的数字的和最大,并输出该路径的最大和。比如以下金字塔的和最大路径的和为7+3+8+7+5=30。
156、假设有如下字符串: (4]{2324} 现在,要求编程分析其括号配对是否正确。请自行选择下列两种方案之一实现该程序:
方案一:不考虑括号优先级,只考虑配对正确性;方案二:考虑括号优先级,比如{1[2(3)4]5} 是正确的。但是[1{2}3]是不正确的。
157、百度是一个大型网站,内部含有多个产品线,比如广为人知的贴吧、知道、空间等应用。然而设计这些应用的统一登录平台却是一件非常艰巨的挑战。需要考虑到通用性和安全性。
1). 对于一个Web应用程序,主要的身份验证和凭证保持的方法主要有cookie和session两种。他们又是如何起作用的?各有哪些优缺点?
2). 影响到cookie值作用范围的因素有哪些?请一一说明。
3) .从安全角度来考虑,一个大型网站的单点登录可能会引入哪些安全问题?如何设计安全的在线单点登录系统?
158、HTML的Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?
159、请用CSS实现如下图的样式,相关尺寸如图示,其中dom结构为:
161、你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
162、用户从手机的浏览器访问,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。
163、Flappy Bird是风靡一时的手机游戏,玩家要操作一只小鸟穿过无穷无尽的由钢管组成的障碍。如果要你在HTML前端开发这个游戏,为了保证游戏的流畅运行,并长时间运行也不会崩溃,请列举开发要注意的性能问题和解决的方法。
164、如下图,请实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序。
166、JAVA和C++的区别是什么?分别用在什么情景比较好?
167、给定一个文件每一行是字符串,找出所有的逆序对,比如abc和cba是逆序的对。
168、给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。
169、C和C++有什么区别,能用C实现C++所有功能吗?C能实现多态吗?
170、25匹马,5条赛道,一匹马一个赛道,比赛只能得到5匹马之间的快慢程度,而不是速度,求决胜1,2,3名至少多少场。
171、请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。