信息技术面试题集.docxVIP

  • 0
  • 0
  • 约6.19千字
  • 约 18页
  • 2026-01-26 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年信息技术面试题集

一、编程语言与算法(5题,每题10分)

1.题目:

请用Python实现一个函数,输入一个字符串,返回该字符串中所有唯一字符的列表(重复字符只保留第一次出现的位置)。例如,输入abaccde,输出应为[a,b,c,d,e]。

答案与解析:

python

defunique_chars(s):

seen=set()

result=[]

forcharins:

ifcharnotinseen:

seen.add(char)

result.append(char)

returnresult

测试

print(unique_chars(abaccde))#输出:[a,b,c,d,e]

解析:使用集合`seen`记录已遍历的字符,列表`result`存储唯一字符。遍历时,若字符不在`seen`中,则添加到两者中。时间复杂度O(n),空间复杂度O(n)。

2.题目:

给定一个无重复元素的整数数组`nums`和一个目标值`target`,请实现二分查找算法,返回`target`在数组中的索引(若不存在返回-1)。假设数组已排序。

答案与解析:

python

defbinary_search(nums,target):

left,right=0,len(nums)-1

whileleft=right:

mid=(left+right)//2

ifnums[mid]==target:

returnmid

elifnums[mid]target:

left=mid+1

else:

right=mid-1

return-1

测试

print(binary_search([1,2,3,4,5],3))#输出:2

解析:核心是每次将搜索区间减半,通过比较`mid`与`target`调整左右指针。时间复杂度O(logn),空间复杂度O(1)。

3.题目:

请用Java实现一个单链表节点类`ListNode`,并编写一个方法`reverseList`,反转链表。

答案与解析:

java

classListNode{

intval;

ListNodenext;

ListNode(intx){val=x;}

}

publicclassSolution{

publicListNodereverseList(ListNodehead){

ListNodeprev=null,curr=head;

while(curr!=null){

ListNodenextTemp=curr.next;

curr.next=prev;

prev=curr;

curr=nextTemp;

}

returnprev;

}

}

解析:迭代反转,使用三个指针`prev`、`curr`、`nextTemp`。时间复杂度O(n),空间复杂度O(1)。

4.题目:

请解释什么是“线程池”及其优势,并用Python的`concurrent.futures`模块实现一个简单的线程池任务调度。

答案与解析:

解释:线程池是一组预先创建的线程,可重复使用以执行任务,避免频繁创建销毁线程的开销。优势包括:

-减少系统开销(避免频繁创建线程);

-控制并发数量(防止资源耗尽);

-提高响应速度(任务可快速分配)。

python

fromconcurrent.futuresimportThreadPoolExecutor

deftask(n):

returnnn

withThreadPoolExecutor(max_workers=3)asexecutor:

results=list(executor.map(task,range(5)))

print(results)#输出:[0,1,4,9,16]

解析:`ThreadPoolExecutor`自动管理线程,`map`方法将任务分配给线程池执行。

5.题目:

请用C++实现一个LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作,要求时间复杂度均为O(1)。

答案与解析:

cpp

includeunordered_map

includelist

classLRUCache{

public:

structNode{

intkey,value;

Node(intk,intv):key(k),value(v){}

};

std::unordered_ma

文档评论(0)

1亿VIP精品文档

相关文档