比亚迪技术面试(测试、测开)
这里写自定义目录标题
- 比亚迪技术面凉经
- 1. 自我介绍
- 2. 让我在我的项目里面挑一个我觉得比较好的介绍一下。
- 3. 问了TCP短连接和长连接
- 怎么进行TCP长连接?怎么知道是不是TCP长连接?(大概是这个问题,有点记不清了)
- 问我用过哪些脚本语言?
- Python:
- JavaScript:
- Perl:
- Ruby:
- PHP:
- Shell:
- Bash:
- PowerShell:
- Tcl/Tk:
- Lua:
- 追问用过python的什么库
- 问对于linux和安卓熟悉吗?
- 追问我linux查看系统资源的命令有哪些?
- top命令:
- free命令:
- df命令:
- iostat命令:
- vmstat命令:
- mpstat命令:
- du命令:
- ps命令:
- netstat命令:
- iftop命令:
- sar命令:
- Linux有哪些查看IO的命令
- 磁盘I/O查看命令
- iostat
- iotop
- vmstat
- sar
- dstat
- 网络I/O查看命令
- ifconfig
- netstat
- nload
- ip
- sar
- 问项目
- 问我做这个项目遇到的最大的难题是什么?
- 一个跟技术无关的问题
- 然后就是反问环节了
- 我问了面试官觉得我有哪些地方可以提升
- 问了面试有几轮
- 问了什么时候出结果
- 问了面试官会不会给我通过
比亚迪技术面凉经
昨天比亚迪来我们学校宣讲,线下HR面已通过,然后今天上午接到技术面通知,线上面试。面试官应该是部门负责人的样子,比较和蔼,然后感觉技术深度也还不错的样子。只是我自己面试下来感觉我应该凉凉,害,还是记录一下,然后复盘总结经验。真的要哭死了,就不能给我发一个offer嘛。
1. 自我介绍
这部分就是我的自我介绍了,我说了一下我大概的情况,主要是介绍了我的项目经历、实习经历巴拉巴拉。
因为我自我介绍里面说了自己之前有在工业互联网的实习经历,项目主要说的是自己的开发经历,然后面试官打断了我跟我介绍了一下他那里的岗位,问我能不能接受接受地理位置和工作岗位,工作地点是在深圳,然后工作岗位是测试和测试开发。(本无offfer秋招人只能疯狂表示自己可以接受)
2. 让我在我的项目里面挑一个我觉得比较好的介绍一下。
我的项目就是那几个烂大街的项目。我先是比较简短的一句话介绍了一下项目,然后问面试官是不是要详细一点,面试官说面试是我展示自己的能力给他看,介绍多少、怎么介绍就看我怎么说了。于是我重新说了一遍这个项目。但是说的稀巴烂,主要是这个项目我确实是在网上找的开源项目555而且没想到今天的面试都是拷打项目,这几天我一直在背八股,几乎没看项目555
3. 问了TCP短连接和长连接
我感觉本来面试官不会问这些基础八股,但是因为我介绍项目介绍的是短链接项目,他联想到了短连接,就顺口问了我知不知道TCP短连接和长连接。oh my god!
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
参考回答:来自文心一言
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP连接中,根据连接的持续时间和使用方式,可以将其大致分为“短连接”和“长连接”两种模式。
TCP短连接
TCP短连接通常指的是每次通信时,客户端和服务器之间都会建立一个新的连接,通信完成后立即断开连接,不会长时间保持连接状态。这种连接方式适用于客户端与服务器之间交互不频繁,或者每次通信的数据量不大的场景。
特点:
每次通信都需要建立和断开连接:这增加了连接的开销,包括TCP三次握手建立连接和四次挥手断开连接的开销。
适合交互不频繁的场景:由于每次通信都需要建立连接,因此不适合需要频繁通信的场景。
资源利用率相对较低:由于频繁地建立和断开连接,可能导致系统资源的浪费。
TCP长连接
TCP长连接则是指客户端和服务器之间在通信过程中,会保持连接状态一段时间,而不是每次通信都重新建立连接。这种连接方式适用于客户端与服务器之间需要频繁通信,或者通信数据量较大的场景。
特点:
连接保持一段时间:在一段时间内,客户端和服务器之间可以复用同一个连接进行多次通信,减少了连接建立和断开的开销。
适合频繁通信的场景:由于连接可以复用,因此非常适合需要频繁通信的场景。
资源利用率高:通过减少连接建立和断开的次数,提高了系统资源的利用率。
实际应用
在实际应用中,根据具体的业务需求和场景选择合适的连接方式非常重要。例如,对于Web服务器来说,由于HTTP 1.0协议默认使用短连接,每个请求都需要建立一个新的连接,这会导致大量的连接建立和断开开销。而HTTP 1.1协议则支持持久连接(也称为长连接),通过Connection: keep-alive头部来指示客户端和服务器之间保持连接状态,以便复用连接进行多次请求和响应。
此外,在一些需要实时通信的场景(如在线聊天、实时游戏等)中,也通常会使用TCP长连接来保持客户端和服务器之间的实时通信。
怎么进行TCP长连接?怎么知道是不是TCP长连接?(大概是这个问题,有点记不清了)
我的回答:请求头里面有一个参数keep-alive,开启这个参数就可以进行TCP长连接。
问我用过哪些脚本语言?
救命,什么是脚本语言啊???
这个问题我一点也回答不了,凉透了
我就说了python,lua,救命我还说了C/C++(救命,这两不是脚本语言555~答错了)
求助文心一言:
脚本语言是一种为了简化编程工作而设计的编程语言,它们通常具有语法简单、易于学习、执行效率高等特点。以下是一些常见的脚本语言:
Python:
是一种广泛使用的高级编程语言,以其简洁的语法和强大的功能库而闻名。
适用于快速开发、数据分析、人工智能、Web开发等多个领域。
JavaScript:
是一种主要用于Web开发的脚本语言,可以在浏览器中直接运行。
也被用于服务器端编程(如Node.js)和移动应用开发(如React Native)。
Perl:
是一种功能强大的文本处理语言,特别适合于处理文本文件和进行复杂的文本分析。
在Web开发、系统管理、网络编程等领域有广泛应用。
Ruby:
是一种简洁、优雅的编程语言,以其面向对象和动态类型的特点而受到欢迎。
Ruby on Rails是一个流行的Web开发框架,极大地简化了Web应用的开发过程。
PHP:
是一种开源的服务器端脚本语言,特别适合于Web开发。
它能够嵌入到HTML中,并可以执行各种Web相关的任务,如会话跟踪、数据库交互等。
Shell:
通常指的是Unix/Linux系统的命令行界面(CLI)脚本语言。
允许用户通过编写脚本来自动化执行一系列命令,提高工作效率。
Bash:
是Bourne Again SHell的缩写,是Unix/Linux系统中常用的Shell之一。
它提供了丰富的命令和脚本编程功能,是系统管理员和开发人员常用的工具。
PowerShell:
是微软开发的一种跨平台的任务自动化和配置管理框架。
它以.NET Framework为基础,提供了丰富的命令和脚本编程功能,特别适合于Windows系统的管理和自动化任务。
Tcl/Tk:
Tcl(Tool Command Language)是一种通用的脚本语言,而Tk是Tcl的图形用户界面工具包。
它们一起提供了一个强大的平台,用于快速开发跨平台的图形应用程序。
Lua:
是一种轻量级的脚本语言,设计用于嵌入到其他应用程序中以提供灵活的扩展和定制功能。
在游戏开发、Web开发、嵌入式系统等领域有广泛应用。
这些脚本语言各有特点,适用于不同的应用场景和编程需求。选择哪种语言取决于具体项目的需求、开发者的熟悉程度以及语言的生态系统和社区支持等因素。
追问用过python的什么库
我说本科的时候用得比较多的是matplotlib用来画图,然后读研的话主要是用python来做实验,里面用得比较多的是pytorch库。
然后大脑一片空白,说自己这两个月都没用过python了。
文心一言回答:
Python作为一种广泛使用的编程语言,拥有大量的第三方库,这些库极大地扩展了Python的功能和应用范围。以下是一些Python常用的库及其简要介绍:
- 数据处理与科学计算
NumPy:Python中用于科学计算的基础包之一,提供了强大的多维数组对象和相应的操作工具。它是许多其他机器学习库的基础。
Pandas:提供了数据结构和数据分析工具,使得在Python中进行数据操作更加简单和直观。它提供了用于快速处理结构化数据的DataFrame对象。
SciPy:Python的算法和数学工具库,包含许多用于数学、科学和工程领域的模块,如线性代数、积分、优化、统计等。 - 数据可视化
Matplotlib:用于创建二维图表和绘图的Python库,是数据分析和展示的重要工具之一。
Seaborn:基于Matplotlib的Python可视化库,专注于统计数据可视化,提供了高级接口,使得绘制各种统计图形变得更加简单。 - 机器学习与深度学习
Scikit-learn:用于机器学习的Python库,内置了许多常用的机器学习算法和工具,如分类、回归、聚类、降维等。
TensorFlow:由Google开源的深度学习框架,提供了用于构建和训练深度学习模型的高级API,并支持分布式计算。
PyTorch:由Facebook开发的深度学习框架,提供了与TensorFlow类似的功能,但更加灵活和动态,便于调试和实验。
Keras:一个用于构建深度学习模型的高级API,可以运行在TensorFlow、Theano和CNTK等后端上,提供了简单、一致的接口。 - Web开发
Django:Python的Web框架,支持快速构建高性能、可扩展的Web应用程序。
Flask:Python的轻量级Web框架,支持快速构建小型Web应用程序和API。 - 网络爬虫与自动化
Requests:Python HTTP库,用于发送HTTP请求,支持HTTP/1.1和HTTP/2。
BeautifulSoup:HTML/XML解析库,用于解析网页内容,提取需要的信息。
Scrapy:Python爬虫框架,用于快速开发高效的爬虫程序,支持分布式爬虫、自动限速、自动重试等功能。
Selenium:自动化测试工具,可以模拟用户操作浏览器,适用于爬取需要模拟登录、动态加载等操作的网页。 - GUI开发
Tkinter:Python自带的标准GUI库,可用于创建基本的窗口和控件。
PyQt(PyQt5、PyQt6):Python的GUI库,支持创建复杂的窗口和控件,支持Qt Designer进行可视化设计。
wxPython:Python的GUI库,支持创建跨平台的窗口和控件。 - 图像处理与计算机视觉
Pillow:Python的图像处理库,可用于打开、编辑和保存各种类型的图像文件,支持图像缩放、裁剪、旋转、滤镜等操作。
OpenCV:开源的计算机视觉库,可用于处理图像和视频流,支持人脸识别、目标跟踪、图像增强等功能。 - 音频与视频处理
Pydub:Python的音频处理库,用于音频剪辑、合并、转码、音量调整、淡入淡出等操作,支持多种音频格式和编解码器。
MoviePy:Python的视频处理库,用于视频剪辑、合并、转码、添加音频等操作,支持多种视频格式和编解码器。 - 其他
Chardet:字符编码探测器,可自动检测文本、网页、XML的编码。
colorama:主要用于给文本添加各种颜色,简单易用。
prettytable:用于在终端或浏览器端构建格式化的输出。
这些库涵盖了数据处理、科学计算、数据可视化、机器学习、Web开发、网络爬虫、自动化、GUI开发、图像处理、计算机视觉、音频与视频处理等多个领域,为Python开发者提供了丰富而强大的工具集。
问对于linux和安卓熟悉吗?
我说没接触过安卓,linux用得多一点
追问我linux查看系统资源的命令有哪些?
天呐,都是我不会的
在Linux系统中,查看系统资源使用情况是一项重要的任务,这可以通过多种命令完成。以下是常用的几个命令及其功能概述:
top命令:
功能:实时监控系统的资源使用情况,包括CPU使用率、内存使用情况、进程列表等。
使用方式:直接在终端中输入top命令即可。用户可以通过该命令看到系统中各个进程的实时资源占用情况,并可以按照不同的排序方式(如CPU占用率、内存占用率)查看进程。
free命令:
功能:显示系统的内存使用情况,包括总内存、已使用内存、空闲内存、缓冲区和缓存的使用情况。
使用方式:在终端中输入free命令。使用-h选项可以使输出以人类可读的格式(如KB、MB、GB)展示。
df命令:
功能:查看系统文件系统的磁盘空间使用情况,包括磁盘总容量、已用空间、可用空间、使用百分比等。
使用方式:在终端中输入df命令。使用-h选项可以使输出更加易于阅读。
iostat命令:
功能:查看系统的磁盘和IO设备的使用情况,包括IO速度、磁盘队列长度、CPU的IO等待时间等。
使用方式:在终端中输入iostat命令。可以结合不同的选项来获取更详细的信息,如-d显示磁盘使用情况,-x显示详细IO统计信息。
vmstat命令:
功能:显示系统的虚拟内存、进程、CPU和IO统计信息。
使用方式:在终端中输入vmstat命令。这个命令提供了一个全面的系统视图,包括CPU、内存、进程和磁盘活动的统计信息。
mpstat命令:
功能:查看各个CPU核心的利用率。
使用方式:虽然top命令也可以查看CPU使用情况,但mpstat提供了更详细的各个CPU核心的使用情况。
du命令:
功能:显示文件夹或文件的磁盘使用情况。
使用方式:du -sh /path/to/directory,其中-s表示汇总输出,-h表示以人类可读的单位显示。
ps命令:
功能:显示当前系统中的进程信息,包括PID、状态、占用的CPU和内存等信息。
使用方式:ps aux命令可以显示所有用户的进程信息。
netstat命令:
功能:显示当前系统的网络连接信息,包括网络连接的状态、协议、IP地址和端口等信息。
使用方式:netstat -a命令可以显示所有连接和监听中的端口。
iftop命令:
功能:实时查看系统网络使用情况,包括各个进程的网络流量情况。
使用方式:直接在终端中输入iftop命令即可。
sar命令:
功能:系统活动报告工具,可以查看系统资源的历史数据,包括CPU使用率、内存使用率等。
使用方式:通过安装并运行sysstat包中的sar命令来获取历史数据。
这些命令是Linux系统管理员和开发人员常用的工具,通过它们可以方便地监控和管理系统资源,及时发现并解决潜在的性能问题。
在Linux系统中,查看I/O(输入/输出)情况可以通过多种命令实现。这些命令能够帮助用户监控系统的磁盘I/O、网络I/O等性能指标,以便进行性能优化或故障排查。以下是一些常用的查看I/O的命令:
Linux有哪些查看IO的命令
磁盘I/O查看命令
iostat
功能:iostat命令用于监控系统的输入输出设备和CPU的使用情况。它可以报告CPU统计信息和所有块设备的输入/输出统计信息。
使用示例:iostat -d -p sda(显示sda磁盘的I/O统计信息)或iostat -x 1(每秒刷新一次所有设备的详细I/O统计信息)。
iotop
功能:iotop命令类似于top命令,但它专注于显示磁盘I/O的使用情况。它可以实时地监视系统中哪些进程正在使用磁盘I/O,以及它们的使用量。
使用示例:iotop -o(按照I/O使用率进行排序显示)。
vmstat
功能:vmstat命令显示关于系统虚拟内存、进程、CPU活动等的信息。它也可以用来查看磁盘I/O的统计信息。
使用示例:vmstat -d(显示磁盘I/O统计信息)。
sar
功能:sar命令是系统活动报告工具,用于收集、报告或保存系统活动信息。它可以用来查看CPU、内存、磁盘I/O等的历史数据。
使用示例:sar -d(显示磁盘I/O统计信息)。
dstat
功能:dstat是一个全能系统资源统计工具,可以用来替代vmstat、iostat、netstat和ifstat等工具。它可以实时地显示所有系统资源的使用情况,包括磁盘I/O。
使用示例:dstat -d(仅显示磁盘I/O统计信息)。
网络I/O查看命令
ifconfig
功能:ifconfig命令用于配置和显示Linux内核中网络接口的网络参数。虽然它主要用于配置网络接口,但也可以用来查看网络接口的I/O统计信息,如接收和发送的数据包数量。
使用示例:直接运行ifconfig命令,查看各个网络接口的RX(接收)和TX(发送)统计信息。
netstat
功能:netstat命令用于显示网络连接、路由表、接口统计等信息。通过不同的选项,可以获取网络I/O的相关数据。
使用示例:netstat -i(显示网络接口的统计信息)。
nload
功能:nload是一个命令行工具,用于实时显示网络接口的流量情况,包括上传和下载速度、已使用的带宽等。
使用示例:直接运行nload命令,查看实时网络流量信息。
ip
功能:ip命令用于显示和操纵路由、网络设备、接口以及隧道。通过不同的选项,可以获取网络接口的统计信息。
使用示例:ip -s link(显示网络接口的传输统计信息)。
sar
除了用于查看磁盘I/O外,sar命令也可以用来查看网络I/O的统计信息,如网络接口的数据传输速率和数据包传输情况等。
使用示例:sar -n DEV(显示网络接口的活动情况)。
这些命令提供了丰富的系统I/O监控功能,用户可以根据具体需求选择合适的命令进行使用。
问项目
说现在网上各种项目代码很多,甚至有一模一样的代码,我们这个项目是怎么写的,
我说的是我们自己先根据功能实现代码,然后有bug再去参考
问我做这个项目遇到的最大的难题是什么?
救命,我根本就没有想过这个问题,就一个学习项目,好像也没有啥困难555~
一个跟技术无关的问题
如果同时有3个领导给我派了活,然后要3天之内出结果,然而这些工作我最多只能完成2个,问我怎么办?
我答哪个比较紧急就先做哪个。
面试官给的答案是:把三位领导拉在一块,让这三位领导自己去决定谁的活不做。
然后就是反问环节了
我问了面试官觉得我有哪些地方可以提升
问了面试有几轮
面试官说校招技术一轮
问了什么时候出结果
面试官说这个要hr才知道,他只是把面试结果反馈给hr
问了面试官会不会给我通过
无语死,实在不知道问什么,胡乱想了一个。
面试官说他这个不能跟我说,(应该是凉凉的意思,要是通过了没什么不能说的555~)
迪爹,给我发个offer吧,求求了~
今天的面试面下来整体的感觉就是我的项目这块还是需要回顾然后加强一下。