版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年程序员面试宝典:题库与答案一、编程语言基础(5题,每题6分)题型说明:考察Java、Python、C++等基础语法及编程思想。1.Java题目:请编写Java代码,实现一个方法,输入一个整数数组,返回其中最大的数,并要求时间复杂度为O(n)。答案:javapublicstaticintfindMax(int[]arr){if(arr==null||arr.length==0)return-1;intmax=arr[0];for(intnum:arr){if(num>max){max=num;}}returnmax;}解析:遍历数组一次,记录最大值,时间复杂度为O(n)。2.Python题目:请用Python实现一个函数,接收一个字符串,返回该字符串中所有数字的和。例如,输入"abc123def45",返回168。答案:pythondefsum_of_digits(s):returnsum(int(char)forcharinsifchar.isdigit())解析:遍历字符串,筛选数字字符并累加。3.C++题目:请用C++实现一个函数,判断一个整数是否为素数,如果是返回true,否则返回false。答案:cppboolisPrime(intnum){if(num<=1)returnfalse;for(inti=2;ii<=num;++i){if(num%i==0)returnfalse;}returntrue;}解析:检查从2到sqrt(num)是否有因数,优化了效率。4.Java题目:请编写Java代码,实现一个方法,输入一个字符串,返回该字符串的反转版本。例如,输入"hello",返回"olleh"。答案:javapublicstaticStringreverseString(Strings){returnnewStringBuilder(s).reverse().toString();}解析:利用StringBuilder的reverse方法高效反转字符串。5.Python题目:请用Python实现一个函数,接收一个列表,返回一个新列表,其中包含原列表中所有偶数的平方。例如,输入[1,2,3,4],返回[4,16]。答案:pythondefsquare_even(nums):return[numnumfornuminnumsifnum%2==0]解析:列表推导式结合条件筛选偶数并平方。二、数据结构与算法(8题,每题7分)题型说明:考察链表、树、排序、查找等核心算法。6.链表题目:请编写代码,实现判断一个链表是否有环。如果有环,返回true,否则返回false。答案(Java):javapublicstaticbooleanhasCycle(ListNodehead){ListNodeslow=head,fast=head;while(fast!=null&&fast.next!=null){slow=slow.next;fast=fast.next.next;if(slow==fast)returntrue;}returnfalse;}解析:快慢指针法,相遇则存在环。7.树题目:请编写代码,实现二叉树的层序遍历(广度优先遍历)。答案(Python):pythonfromcollectionsimportdequedeflevel_order(root):ifnotroot:return[]queue=deque([root])result=[]whilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(level)returnresult解析:队列实现BFS,按层遍历二叉树。8.排序题目:请实现快速排序算法,输入一个整数数组,返回排序后的数组。答案(C++):cppvoidquickSort(int[]arr,intleft,intright){if(left>=right)return;intpivot=arr[left+(right-left)/2];inti=left,j=right;while(i<=j){while(arr[i]<pivot)i++;while(arr[j]>pivot)j--;if(i<=j)swap(arr[i++],arr[j--]);}quickSort(arr,left,j);quickSort(arr,i,right);}解析:分治思想,递归排序左右子数组。9.查找题目:请实现二分查找算法,输入一个有序数组和一个目标值,返回目标值的索引,如果不存在返回-1。答案(Java):javapublicstaticintbinarySearch(int[]arr,inttarget){intleft=0,right=arr.length-1;while(left<=right){intmid=left+(right-left)/2;if(arr[mid]==target)returnmid;elseif(arr[mid]<target)left=mid+1;elseright=mid-1;}return-1;}解析:递归或迭代查找,时间复杂度O(logn)。10.动态规划题目:请编写代码,实现斐波那契数列的第n项(n>=1)。答案(Python):pythondeffibonacci(n):ifn==1:return1dp=[0](n+1)dp[1]=1foriinrange(2,n+1):dp[i]=dp[i-1]+dp[i-2]returndp[n]解析:使用动态规划存储子问题结果。11.栈题目:请用栈实现一个函数,判断一个字符串是否是有效的括号组合,例如"()"、"()[]{}"有效,"(]"无效。答案(Java):javapublicstaticbooleanisValid(Strings){Stack<Character>stack=newStack<>();for(charc:s.toCharArray()){if(c=='('||c=='['||c=='{'){stack.push(c);}else{if(stack.isEmpty())returnfalse;chartop=stack.pop();if((c==')'&&top!='(')||(c==']'&&top!='[')||(c=='}'&&top!='{')){returnfalse;}}}returnstack.isEmpty();}解析:栈匹配左括号与右括号。12.哈希表题目:请编写代码,实现判断一个字符串是否包含重复字符(区分大小写)。答案(Python):pythondefcontainsDuplicate(s):seen=set()forcharins:ifcharinseen:returnTrueseen.add(char)returnFalse解析:哈希集合记录已遍历字符。13.递归题目:请用递归实现二叉树的前序遍历(根-左-右)。答案(C++):cppvoidpreOrder(TreeNoderoot){if(!root)return;visit(root);preOrder(root->left);preOrder(root->right);}解析:先访问根节点,再递归左右子树。14.贪心算法题目:给定一个非负整数数组,表示柱子的高度,请计算由这些柱子组成的最大矩形面积。答案(Java):javapublicstaticintlargestRectangleArea(int[]heights){int[]stack=newint[heights.length+1];inttop=-1,maxArea=0;for(inti=0;i<=heights.length;++i){inth=(i==heights.length)?0:heights[i];while(top>=0&&h<heights[stack[top]]){intheight=heights[stack[top--]];intwidth=top==-1?i:i-stack[top]-1;maxArea=Math.max(maxArea,heightwidth);}stack[++top]=i;}returnmaxArea;}解析:单调栈计算柱状图最大面积。三、数据库与SQL(5题,每题6分)题型说明:考察MySQL、SQL查询及优化。15.SQL查询题目:假设有表`employees`(`id`,`name`,`department`,`salary`),请编写SQL查询,返回工资高于部门平均工资的员工姓名和部门名称。答案:sqlSELECT,e.departmentFROMemployeeseINNERJOIN(SELECTdepartment,AVG(salary)ASavg_salaryFROMemployeesGROUPBYdepartment)dONe.department=d.departmentWHEREe.salary>d.avg_salary;解析:子查询计算部门平均工资,内连接筛选高于平均的员工。16.SQL优化题目:请解释为什么以下SQL查询效率低,并提出优化方案。sqlSELECTFROMordersWHEREcustomer_id=123ANDorder_dateBETWEEN'2023-01-01'AND'2023-12-31';答案:问题:-未使用索引(如果`customer_id`和`order_date`未索引)。-`SELECT`效率低,应指定字段。优化:sqlSELECTorder_id,order_date,total_amountFROMordersWHEREcustomer_id=123ANDorder_dateBETWEEN'2023-01-01'AND'2023-12-31'ORDERBYorder_date;解析:指定字段,确保索引覆盖`customer_id`和`order_date`。17.SQL分组与排序题目:假设有表`sales`(`product_id`,`region`,`amount`),请编写SQL查询,返回每个地区的总销售额,并按销售额降序排列。答案:sqlSELECTregion,SUM(amount)AStotal_salesFROMsalesGROUPBYregionORDERBYtotal_salesDESC;解析:分组统计销售额,按降序排序。18.SQL连接题目:假设有表`students`(`id`,`name`,`class_id`)和`classes`(`id`,`class_name`),请编写SQL查询,返回每个学生的姓名和班级名称。答案:sqlSELECT,c.class_nameFROMstudentssINNERJOINclassescONs.class_id=c.id;解析:内连接关联学生和班级表。19.SQL事务题目:请编写SQL代码,实现银行转账操作(扣款账户A减款,收款账户B加款),要求使用事务保证原子性。答案:sqlSTARTTRANSACTION;UPDATEaccountsSETbalance=balance-100WHEREaccount_id='A';UPDATEaccountsSETbalance=balance+100WHEREaccount_id='B';COMMIT;解析:事务确保两笔操作同时成功或失败。四、系统设计(3题,每题10分)题型说明:考察分布式系统、缓存、高并发等设计能力。20.缓存设计题目:请设计一个简单的LRU(最近最少使用)缓存,支持get和put操作。答案(Java):javaclassLRUCache{privateMap<Integer,Integer>cache;privateDeque<Integer>deque;privateintcapacity;publicLRUCache(intcapacity){this.capacity=capacity;cache=newLinkedHashMap<>(capacity,0.75f,true);deque=newLinkedList<>();}publicintget(intkey){if(!cache.containsKey(key))return-1;deque.removeFirstOccurrence(key);deque.offerFirst(key);returncache.get(key);}publicvoidput(intkey,intvalue){if(cache.containsKey(key)){deque.removeFirstOccurrence(key);}elseif(cache.size()==capacity){intoldest=deque.pollLast();cache.remove(oldest);}cache.put(key,value);deque.offerFirst(key);}}解析:结合LinkedHashMap和LinkedList实现LRU。21.分布式系统题目:请解释CAP理论,并说明为什么分布式数据库通常选择CA或CP。答案:CAP理论:-C(一致性):所有节点在同一时间具有相同的数据。-A(可用性):每次请求都能得到响应(非错误),但不保证数据一致性。-P(分区容错性):网络分区时系统仍能继续运行。选择CA或CP的原因:-CA(一致性+可用性):适用于读多写少场景(如分布式缓存Redis)。-CP(一致性+分区容错性):适用于写多场景(如分布式事务)。解析:分布式系统无法同时满足三者,需根据业务权衡。22.高并发设计题目:假设需要设计一个高并发计数器,支持百万级QPS,请说明你的方案。答案:方案:1.Redis计数器:使用Redis的INCR命令,支持原子自增。2.分布式锁:如ZooKeeper或Redis实现分布式锁,防止并发冲突。3.本地缓存+异步批量写入:本地计数器累积,定时批量写入数据库。4.数据库优化:使用自增ID或UUID,避免锁表。解析:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年玄武岩矿化封存项目可行性研究报告
- 2025年江苏省徐州市中考生物真题卷含答案解析
- 2025年中级(四级)化学检验员(石油化工科研实验)理论知识试题及答案
- 2025年建筑施工技术练习题库+答案(附解析)
- 2025年焊工(三级)焊接工艺评估考试试卷(附答案)
- 人力资源部年度工作总结和计划
- 2025年鼻炎考试试题及答案
- 消防保卫措施
- 2025年化工行业应知应会试题及答案
- 求职面试技巧课本电子版
- 智能家居销售培训课件
- 2025-2026学年小学苏少版(2024)新教材一年级上册美术期末测试卷及答案
- 2025-2026学年北师大版六年级数学上册期末测试卷及答案
- 不同类型休克的床旁超声鉴别诊断策略
- 企业ESG审计体系构建-洞察及研究
- 政治理论考试试题库100题
- 2025医疗器械经营质量管理体系文件(全套)(可编辑!)
- 物业与商户装修协议书
- 2025年信用报告征信报告详版个人版模板样板(可编辑)
- 急诊科心肌梗死抢救流程
- 小学三年级数学选择题专项测试100题带答案
评论
0/150
提交评论