面试问到的那些技术细节

技术面试时刚开始可能会问的很粗,先聊聊大面上会哪些东西。但是针对某方面,面试者真正得到分的得是回答出了技术细节。因为粗的东西找个培训或者自己随便学一下就能答上来。细节才能体现一个人是否真的做过思考过。

现在AI前端代码已经写得很好了。如果不是视觉要求特别高的,基本不需要专门的前端开发人员。所以现在的技术人员基本都要求是全栈。这个全栈不仅仅包括前端、后端,还包括运维、架构、基础设施、安全、测试这些。

Linux命令问题

平时工作中用到的,代码AI都能写。技术人员多是做测试的。但是有些运维工作,很多公司都有GUI图形界面操作。但是还是有很多小公司没必要搞得这么复杂。要自己上去操作。虽然现在有这个龙虾,那个螃蟹的可以替人做。但因为涉及安全性生产都不让用。所以linux命令还是得会。

面试官刚开始会问一些粗放的问题。常用的都是哪些linux命令什么的。如果提到比如curl命令。那么细节来了。 curl后端直接加个空格加个url。能不能执行?会遇到什么坑?怎么解决?

✅ 能执行的情况

bash

go 复制代码
# 这几种写法都能执行curl https://api.example.com/datacurl"https://api.example.com/data"curl'https://api.example.com/data'

本质上:curl 命令的第一个非选项参数会被解析为 URL,空格只是参数分隔符。

⚠️ 常见的坑及解决方案

坑1:URL 包含特殊字符(最常见)

bash

go 复制代码
# ❌ 问题:URL 中包含 &、?、# 等特殊字符curl https://api.example.com/data?id=123&name=test# shell 会将 & 解释为后台运行符号# ✅ 解决:用引号包裹 URLcurl"https://api.example.com/data?id=123&name=test"

坑2:多个空格导致参数解析错误

bash

go 复制代码
# ❌ 问题:URL 前后有多个空格curl   https://api.example.com/data   -H"Content-Type: application/json"# shell 会合并空格,但可能影响其他参数解析# ✅ 解决:避免多余空格,或使用引号curl"https://api.example.com/data"-H"Content-Type: application/json"

坑3:URL 被误认为是其他选项

bash

go 复制代码
# ❌ 问题:URL 以 - 开头curl -https://api.example.com# curl 会把 -https 当作选项,报错:curl: option -https: is unknown# ✅ 解决:使用 -- 分隔选项和参数,或用引号curl -- "https://api.example.com"curl"https://api.example.com"# 更简洁

坑4:换行符或隐藏字符

bash

go 复制代码
# ❌ 问题:从文档复制的 URL 可能包含换行符或隐藏字符curl https://api.example.com/data[这里可能有不可见的换行符]# ✅ 解决:先粘贴到编辑器检查,或用单引号包裹curl'https://api.example.com/data'

🔧 最佳实践

1. 始终用引号包裹 URL

bash

go 复制代码
# 推荐写法curl"https://api.example.com/data?param1=value1&param2=value2"curl'https://api.example.com/data?param1=value1&param2=value2'

2. 使用数组方式存储参数(脚本中)

bash

go 复制代码
# 脚本中更安全url="https://api.example.com/data?param1=value1"curl-X POST "$url"\-H"Content-Type: application/json"\-d'{"key":"value"}'

3. URL 编码特殊字符

bash

go 复制代码
# 如果 URL 中包含空格、中文等,需要编码curl"https://api.example.com/search?q=$(echo'hello world'| jq -sRr @uri)"# 或手动编码curl"https://api.example.com/search?q=hello%20world"

📝 完整示例对比

bash

go 复制代码
# ❌ 不安全的写法curl https://api.example.com/data?user=张三&age=18-H"Authorization: Bearer token123"# 问题:# 1. 中文没有编码# 2. & 会被 shell 解释为后台运行# 3. 空格分隔符可能被误解析# ✅ 安全的写法curl"https://api.example.com/data?user=$(echo'张三'| jq -sRr @uri)&age=18"\-H"Authorization: Bearer token123"

🎯 总结

场景 推荐做法 原因
简单 URL(字母数字+./-) curl https://api.com 可以直接用,无需引号
包含 &?=# 等字符 curl "https://api.com?a=1&b=2" 防止 shell 解释特殊字符
URL 以 - 开头 curl -- "https://api.com" 避免被误认为选项
包含中文/空格 先编码 + 引号包裹 确保服务器正确解析
脚本中使用 用变量 + 引号 提高可维护性和安全性

核心原则有疑问就加引号!用双引号或单引号包裹 URL 是最安全的做法,可以避免 99% 的坑。

Docker端口问题

还可能会给一个小的场景问题:在docker里部署了一个web应用,应用起来了。在浏览器上用域名也可以正常访问。但是本机上curl localhost:端口却提示连接被拒绝,有哪些可能的原因?

这个问题大模型会给出一堆答案我就不在这里列了。我就说两个我真正工作中遇到的情况。

第一个是端口映射问题。docker里的应用在docker里是OK的。但是宿主机想要访问需要在比如docker compose文件里将端口映射到宿主机上,宿主机才可以访问。

第二个是防火墙策略问题。iptables里有些防火墙策略。防火墙有可能会阻止本机回环接口的访问。或者INPUT 链阻止了外部访问。

总结

今天列举的两个场景都很简单常用,但是也是需要真正做过或者思考过才能回答上来的。这也是面试官真正要考察的。

相关推荐
凯瑟琳.奥古斯特2 小时前
力扣1235:加权区间调度最优解
java·python·算法·leetcode·职场和发展
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题 第89题】【Mysql篇】第19题:Hash 索引和 B+ 树索引的区别?它们在使用方面的区别?
java·数据库·mysql·面试·哈希算法
memcpy03 小时前
LeetCode 2144. 打折购买糖果的最小开销【贪心】
算法·leetcode·职场和发展
Purple Coder4 小时前
STM32基础(1)
职场和发展
Byron__4 小时前
Redis高频面试:数据结构+编码+分布式锁+缓存问题
redis·缓存·面试
Byron__5 小时前
Redis高可用面试知识:持久化+主从复制+哨兵机制
redis·面试·bootstrap
酉鬼女又兒5 小时前
零基础入门计算机网络:从基本概念到核心交换技术
开发语言·计算机网络·考研·职场和发展·php
凯瑟琳.奥古斯特6 小时前
力扣1001网格照明解法
算法·leetcode·职场和发展
川石课堂软件测试6 小时前
作为一名测试工程师如何学习Kubernetes(k8s)技能
学习·测试工具·容器·职场和发展·kubernetes·测试用例·harmonyos
自传.6 小时前
Redis 高频考试面试知识点2(主从复制、缓存穿透/击穿/雪崩、集群分片、切片)
redis·缓存·面试