2026年IT公司软件工程师面试问题集.docxVIP

  • 0
  • 0
  • 约8.59千字
  • 约 25页
  • 2026-01-16 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年IT公司软件工程师面试问题集

一、编程基础与数据结构(共5题,每题10分,总分50分)

题目1(10分)

请实现一个函数,输入一个整数数组,返回数组中所有奇数元素的平方和。要求:时间复杂度O(n),空间复杂度O(1)。

答案:

java

publicintsumOfOddSquares(int[]nums){

intsum=0;

for(intnum:nums){

if(num%2!=0){

sum+=numnum;

}

}

returnsum;

}

解析:

1.遍历数组,检查每个元素是否为奇数

2.如果是奇数,计算其平方并累加到sum变量

3.最终返回sum值

时间复杂度:O(n),需要遍历整个数组

空间复杂度:O(1),只使用了固定大小的sum变量

题目2(10分)

给定一个链表,删除链表中的所有重复元素,保留每个元素一次,返回删除重复元素后的链表。假设链表已定义如下:

java

classListNode{

intval;

ListNodenext;

ListNode(intx){val=x;}

}

答案:

java

publicListNodedeleteDuplicates(ListNodehead){

if(head==null)returnnull;

ListNodecurrent=head;

while(current!=null){

//跳过所有重复节点

while(current.next!=nullcurrent.val==current.next.val){

current.next=current.next.next;

}

current=current.next;

}

returnhead;

}

解析:

1.使用双指针法:current指向当前不重复的节点

2.内层循环跳过所有与current.val相同的节点

3.这种方法只需要O(n)时间,O(1)空间

关键在于正确处理相邻重复元素的情况

题目3(10分)

实现一个LRU(最近最少使用)缓存,支持get和put操作。缓存容量为capacity。假设缓存已定义如下:

java

classLRUCache{

//请在此处实现LRUCache类

}

答案:

java

classLRUCache{

privateMapInteger,Nodecache;

privateNodehead,tail;

privateintcapacity;

privateintsize;

classNode{

intkey;

intvalue;

Nodeprev;

Nodenext;

Node(intkey,intvalue){this.key=key;this.value=value;}

}

publicLRUCache(intcapacity){

this.capacity=capacity;

cache=newHashMap();

head=newNode(0,0);

tail=newNode(0,0);

head.next=tail;

tail.prev=head;

}

publicintget(intkey){

if(!cache.containsKey(key))return-1;

Nodenode=cache.get(key);

moveToHead(node);

returnnode.value;

}

publicvoidput(intkey,intvalue){

if(cache.containsKey(key)){

Nodenode=cache.get(key);

node.value=value;

moveToHead(node);

}else{

if(size==capacity){

cache.remove(tail.prev.key);

removeNode(tail.prev);

size--;

}

NodenewNode=newNode(key,value);

cache.put(key,newNode);

addNode(newNode);

size++;

}

}

privatevoidaddNode(Nodenode){

node.prev=head;

node.next=head.next;

head.next.prev=node;

head.next

文档评论(0)

1亿VIP精品文档

相关文档