最近哈士奇也和小伙伴一起开始准备简历了,第一次面试还是十分紧张的,哈士奇语无伦次,大脑一片空白,但是面试过后还是需要总结一下面试的过程的,所以哈士奇写下这篇面经回顾一下自己的问题,并且解决没有解决出来的问题。
面试问题
面试官的问题如下:
- 介绍一下你自己
- 看到你的简历提到用到了aibot,具体是怎么使用的,怎么训练的
- 在掘金上面发文章,通常是写些什么内容
- 项目用过uni-app,在对于不同app的差异怎么解决的
- 使用js画个圆
- 使用js计算字符串中出现的字母个数
- url可以放什么东西
- 聊聊es6的解构
- 聊一聊vue等框架对前端开发的影响
回复
1.介绍一下你自己
各位面试官你们好,我是来自xxx学校的,xxx,做过的项目,能胜任的原因。。。。
2. 看到你的简历提到用到了aibot,具体是怎么使用的,怎么训练的
哈士奇简单介绍了一下coze中的大模型使用的方法,从admin system user给面试官讲了讲自己是怎么制定模型的形象的。
3. 在掘金上面发文章,通常是写些什么内容
主要从js,AIGC,算法三个方面介绍了一下自己的发布的内容
4. 项目用过uni-app,在对于不同app的差异怎么解决的
- 条件编译 :uni-app提供了条件编译功能,可以根据不同的平台编写特定的代码。例如,使用
#ifdef APP-PLUS
、#endif
等指令来编写仅针对特定平台的代码。 - 适配不同平台:针对Android和iOS平台可能存在的界面和交互差异,可以编写平台特定的样式和逻辑。同时,也要考虑到不同设备尺寸和分辨率的适配问题。
- 插件和模块:对于某些特定功能,可以使用uni-app的插件市场或自定义模块来实现。这些插件和模块通常已经考虑到了不同平台的差异,可以简化开发过程。
- 测试和调试:在开发过程中,要在不同的设备和平台上进行充分的测试和调试,以确保应用的稳定性和兼容性。
5. 使用js画个圆
html
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(250, 250, 100, 0, 2 * Math.PI); // 画一个圆,圆心(250, 250),半径100
ctx.strokeStyle = '#FF0000'; // 设置圆的边框颜色
ctx.lineWidth = 5; // 设置圆的边框宽度
ctx.stroke(); // 绘制圆
</script>
</body>
</html>
6. 使用js计算字符串中出现的字母个数
使用JavaScript计算字符串中出现的字母个数可以有多种方法。这有几种不同的实现方式:
方法一:使用正则表达式
javascript
function countLettersRegex(str) {
// 使用正则表达式匹配所有字母(不区分大小写)
const matches = str.match(/[a-zA-Z]/g);
return matches ? matches.length : 0;
}
const str = "Hello, World! 123";
console.log(countLettersRegex(str)); // 输出: 10
方法二:使用for循环和字符判断
javascript
function countLettersLoop(str) {
let count = 0;
for (let i = 0; i < str.length; i++) {
const char = str[i];
// 判断字符是否为字母
if (/[a-zA-Z]/.test(char)) {
count++;
}
}
return count;
}
const str = "Hello, World! 123";
console.log(countLettersLoop(str)); // 输出: 10
方法三:使用reduce和箭头函数
javascript
function countLettersReduce(str) {
return str.split('').reduce((count, char) => {
// 判断字符是否为字母并累加计数
return /[a-zA-Z]/.test(char) ? count + 1 : count;
}, 0);
}
const str = "Hello, World! 123";
console.log(countLettersReduce(str)); // 输出: 10
方法四:使用Array.prototype.filter
javascript
function countLettersFilter(str) {
return str.split('').filter(char => /[a-zA-Z]/.test(char)).length;
}
const str = "Hello, World! 123";
console.log(countLettersFilter(str)); // 输出: 10
7. url可以放什么东西
- 协议 :例如
http://
、https://
、ftp://
等,用于指定资源使用的传输协议。 - 域名或IP地址:用于标识资源的服务器位置。
- 端口号:可选,用于指定服务器上特定服务的端口。
- 路径:用于指定服务器上资源的具体位置。
- 查询字符串 :可选,用于传递参数给服务器,通常以
?
开始,参数之间用&
分隔。 - 片段标识符 :可选,用于指定资源的某个部分,通常以
#
开始。
例如:https://www.example.com:8080/path/to/resource?param1=value1¶m2=value2#section1
8. 聊聊es6的解构
数组解构:
javascript
const [a, b, c] = [1, 2, 3];
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(c); // 输出: 3
对象解构:
javascript
const person = { name: 'Alice', age: 30 };
const { name, age } = person;
console.log(name); // 输出: Alice
console.log(age); // 输出: 30
解构还可以用于函数参数、默认值等场景,大大提高了代码的可读性和可维护性。 具体内容可以看看哈士奇的这篇文章浅谈ES6部分新特性之let、const与解构
9. 聊一聊vue等框架对前端开发的影响
提高开发效率:Vue等前端框架通过提供组件化的开发模式,使得开发者可以将复杂的界面拆分成多个独立的、可复用的组件。这不仅提高了代码的可维护性和可测试性,还使得开发者可以更加专注于每个组件的逻辑,从而提高开发效率。
统一开发标准:前端框架定义了一套开发标准,使得团队成员可以按照相同的规范进行开发。例如,Vue框架采用了MVVM(Model-View-ViewModel)的架构模式,将数据层、视图层和逻辑层进行了分离。这种明确的分层结构使得多人协作更加高效,降低了沟通成本,并且方便新成员的接入。
提供丰富的功能和工具:前端框架通常会提供一系列的功能和工具,以帮助开发人员快速搭建复杂的Web应用。这些功能和工具包括但不限于路由管理、状态管理、数据双向绑定等,它们大大简化了开发过程,使得开发者可以更加专注于业务逻辑的实现。
优化用户体验:Vue等前端框架通过虚拟DOM和响应式机制,避免了不必要的全局重新渲染,从而提升了用户体验。这使得用户在操作界面时能够感受到更加流畅和自然的交互效果。
降低学习成本:尽管前端框架本身需要一定的学习成本,但它们的文档和社区资源通常都非常丰富。对于新手来说,这些框架的组件化开发方式和MVVM架构模式使得前端开发更加容易理解。同时,由于这些框架的流行性和广泛应用,开发者可以很容易地找到相关的教程和案例,从而更快地掌握它们的使用方法。
总结
总的来说第一次面试还是十分紧张的,哈士奇也没有准备好第一次面试,导致自己第一次面试十分紧张,而且语无伦次,hhh,希望这篇面经能够帮助大家在接下来的面试中吸取经验。