今天某司笔试,20道选择题,5道算法编程题

文章目录

  • 编程题
    • 复原IP地址
    • 接雨水
    • 搜索二维矩阵是否存在目标值
    • 比较版本号
    • 判断点到三角形最短距离
  • 选择题

编程题

笔试题第一题:

复原IP地址

class Solution(object):def restoreIpAddresses(self, s):""":type s: str:rtype: List[str]"""#划分4段SEG_COUNT = 4ans = list()segments = [0] * SEG_COUNTdef dfs(segId, segStart):#如果找到了 4 段 IP 地址并且遍历完了字符串,那么就是一种答案if segId == SEG_COUNT:if segStart == len(s):ipAdd = ".".join(str(seg) for seg in segments)ans.append(ipAdd)return# 如果还没有找到 4 段 IP 地址就已经遍历完了字符串,那么提前回溯if segStart == len(s):return# 由于不能有前导零,如果当前数字为 0,那么这一段 IP 地址只能为 0if s[segStart] == "0":segments[segId] = 0dfs(segId + 1, segStart + 1)# 一般情况,枚举每一种可能性并递归addr = 0for segEnd in range(segStart, len(s)):addr = addr * 10 + (ord(s[segEnd]) - ord("0"))if 0 < addr <= 0xFF:segments[segId] = addrdfs(segId + 1, segEnd + 1)else:breakdfs(0, 0)return ans

接雨水


双指针

class Solution:def trap(self, height: List[int]) -> int:# 边界条件if not height: return 0n = len(height)left,right = 0, n - 1  # 分别位于输入数组的两端maxleft,maxright = height[0],height[n - 1]ans = 0while left <= right:maxleft = max(height[left],maxleft)maxright = max(height[right],maxright)if maxleft < maxright:ans += maxleft - height[left]left += 1else:ans += maxright - height[right]right -= 1return ans

搜索二维矩阵是否存在目标值

class Solution(object):def searchMatrix(self, matrix, target):""":type matrix: List[List[int]]:type target: int:rtype: bool"""M, N = len(matrix), len(matrix[0])left, right = 0, M * N - 1#两次二分查找while left <= right:mid = left + (right - left) // 2cur = matrix[mid // N][mid % N]if cur == target:return Trueelif cur < target:left = mid + 1else:right = mid - 1return False

比较版本号

class Solution(object):def compareVersion(self, version1, version2):""":type version1: str:type version2: str:rtype: int"""nums1 = version1.split('.')nums2 = version2.split('.')n1, n2 = len(nums1), len(nums2)# 比较版本号。for i in range(max(n1, n2)):#短的版本号用0填充#比如1.12与1.12.1比较#1.12->1.12.0i1 = int(nums1[i]) if i < n1 else 0i2 = int(nums2[i]) if i < n2 else 0if i1 != i2:return 1 if i1 > i2 else -1# 其余的版本号都相等return 0

判断点到三角形最短距离

  1. 判断点在三角形区域外
  2. 计算到三条边的最短距离
    通过叉积可以判断点是否在三角形内。锐角叉积为正,钝角叉积为负,直角叉积为0。
    a · b = |a| × |b| × cos(θ)
    也可以写作
    a⋅b=xa×xb+ya×yba\cdot b=x_{a}\times x_{b} +y_{a}\times y_{b} a⋅b=xa​×xb​+ya​×yb​

    PS:极其啰嗦
import math
triangle=[[1,2],[3,4],[4,6]]
p = [3,4.1]def shortest(triangle, p):[A, B, C]=triangleP=p#判断是否在定点上,#顶点上距离为0for dot in triangle:if p==dot:return 0#判断是否在三角形内[ap, bp, cp]=[[A[0]-P[0], A[1]-P[1]],[B[0]-P[0], B[1]-P[1]],[C[0]-P[0], C[1]-P[1]]] [ab, bc, ca]=[[A[0]-B[0], A[1]-B[1]],[B[0]-C[0], B[1]-C[1]],[C[0]-A[0], C[1]-A[1]]] #判断APxAB,BPxBC, CPxCA三个叉积是否同向#直角叉积为0,舍去。判断剩下的叉积是否同向#在定点叉积也为0.summ = 1for io,ip in zip([ap, bp, cp], [ab, bc, ca]):product = io[0]*ip[0]+io[1]*ip[1]if product == 0:continuesumm *= product#在三角形内if summ>0:return 0#在三角形外#计算距离#d = abs((Ax+By+C)/sqrt(A**2+B**2))def get_distance(a, b, p):k = (b[1]-a[1])/(b[0]-a[0])# kx-y+b = 0b0 = a[1] - k*a[0]d = abs((k*p[0]-p[1]+b0)/math.sqrt(k**2+1))return dd1 = get_distance(A, B, p)d2 = get_distance(B, C, p)d3 = get_distance(C, A, p)shortest_distance = 0#取最短距离for d in [d1, d2, d3]:if shortest_distance<d:shortest_distance=dreturn shortest_distance
shortest(triangle, p)

选择题

  1. 彩色图片占多少内存?
    现在假如有一个图片是600*800的,文件大小100KB。

    图片内存大小的计算公式是 :图片高度 * 图片宽度 * 一个像素占用的字节数,也就是 600 * 800 * 4 byte = 1875KB = 1.83M

  2. 提及了线程和进程的区别?
    其中的题点,同一进程的多个线程可以共享资源和内存。所以线程不具备独立的虚拟地址空间

  3. 系统不发生死锁的最小资源数?

         某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是10个。
    

    三个进程,都需要同类资源四个,当有10个这样的资源的时候,无论你怎么分配都一定先有一个满足了需要4个资源的条件,他先跑完,就可以释放资源给其他进程了,如果少一个,也就是九个资源,有可能是(3,3,3),这样就刚好这三个进程都跑不动。。

  4. JSON的数据格式

  5. Word2vec词向量
    题点在于Word2vec是无监督学习。

[求职笔试]20210703笔试相关推荐

  1. 苏宁计算机笔试,苏宁笔试经验笔试写作

    苏宁笔试经验笔试写作 苏宁笔试经验:应聘策划.会计.行政人事类的不一样,我到的时候策划类的已经考过了:半个小时的行政能力测试题;现场会计类的测试还在继续,听人家说是专业题,看他们拿着计算机在那狂算也基 ...

  2. 华为OD笔试202010OD笔试华为OD第二题最长的非递减连续子序列的长度

    华为OD笔试202010OD笔试华为OD第二题最长的非递减连续子序列的长度要连续的数字序列的最长的长度 直接看输入输出 输入 abc2234019A334bc 输出 4 解释:输入一个字符串,只包含字 ...

  3. [百度笔试]百度笔试大集锦

    1 编程: 用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回. 2 编程: 用C语言实现函数void * memmove(void *dest,const void *sr ...

  4. linux指令笔试,Linux笔试常用命令

    Linux笔试常用命令 时间:2019-01-01 [www.unjs.com - 资料大全] 文件操作命令 ls 作用:列目录,Linux笔试常用命令>(https://www.unjs.co ...

  5. java面笔试_java笔试手写算法面试题大全含答案

    java笔试手写算法面试题大全含答案 1.统计一篇英文文章单词个数. public class WordCounting { public static void main(String[] args ...

  6. 华三c语言笔试,H3C笔试及答案解析

    最近一直在找工作,前几天去H3C笔试了一把,题目出的还可以,偷偷记了点,我把答案和解析全都写出来了,希望对你有用. 1.以下描述正确的有(AD) A.1个字节(byte)由8个比特(bit)组成 B. ...

  7. 华为 社招 C语言笔试,华为笔试C语言笔试题之3

    <华为笔试C语言笔试题之3>由会员分享,可在线阅读,更多相关<华为笔试C语言笔试题之3(10页珍藏版)>请在人人文库网上搜索. 1.C 语言笔试题之34. static 有什么 ...

  8. 计算机办公笔试,计算机笔试(办公自动化).doc

    计算机笔试(办公自动化) 湖南长沙新航道学校办公自动化 笔试试题 在Windows Xp中,"任务栏"的作用是 A)显示系统的所有功能 B)只显示当前活动窗口名C)只显示正在后台工 ...

  9. 字节跳动数据分析岗笔试分享笔试形式和内容

    @字节跳动数据分析岗笔试 笔试形式和内容 由于关于字节跳动数据分析的笔试分享经验较少,参加了字节的笔试后,想做一个记录,就写下了这篇文章.不知道自己笔试过了没有,希望能收到面试邀请吧,同时也希望可以帮 ...

最新文章

  1. python 检验数据正态分布程度_python 实现检验33品种数据是否是正态分布
  2. 在室内停车场使用道路标记语义进行厘米级建图和定位
  3. Bootstrap-下拉菜单
  4. mysql查询当前use的数据库
  5. CSS3无前缀脚本prefixfree.js与Animatable使用
  6. 计算机与应用教学,教学方法与教学手段
  7. python的git_Pygit: 用Python实现Git的功能
  8. VTK:图片之Transparency
  9. Hadoop企业优化
  10. CMU Database Systems - Sorting,Aggregation,Join
  11. 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
  12. 不到一年英伟达股价又翻番了,CFO说:感谢中国、感谢AI
  13. java实现视频加密_JAVA实现视频加密
  14. Spring Boot设置匹配指定后缀*.action *.do的路径
  15. 如何理解t检验、t分布、t值?
  16. 2020年苏大计算机考研872真题及解析
  17. WinForm界面开发
  18. Coinbase与华尔街的内幕故事
  19. 二十四节气-大寒海报、文案分享。冬寒终有尽,春暖海先觉。
  20. 组合学:使用10个数字与52个字母生成1477万个不重复的4位串码V3完结版本

热门文章

  1. cloab_2019-01-01 _使用记录
  2. 玩转实名认证 让您的信息更安全
  3. overleaf中添加论文引用(亲测有效)
  4. Ubuntu “readonly” option is set(add to override)错误
  5. 分享一下我的人生经历
  6. vue3在新的tab页打开
  7. 5.9亿用户的狂欢,短视频的“舞台社交”
  8. TestNG+Allure生成测试报告
  9. 骨传导耳机通话质量怎么样、通话品质好的耳机排名
  10. C语言:rand取随机数用法